Tôi tự hỏi nếu điều này là hoàn toàn thread-an toàn và có hay không các từ khóa dễ bay hơi nên được đặt ra.Đây có phải là (bool dễ bay hơi) luôn luôn là chủ đề an toàn không?
using System.Threading;
class Program
{
private static volatile bool _restart = true;
private static void Main()
{
while (_restart)
{
// Do stuff here every time for as long as _restart is true
Thread.Sleep(1);
}
}
private static void SomeOtherThread()
{
Thread.Sleep(1000);
_restart = false;
}
}
Tôi nghĩ là vậy, nhưng tôi muốn kiểm tra lại, vì tôi không chắc chắn 100% tôi chỉ muốn chắc chắn.
Tôi nghĩ rằng từ khóa dễ bay hơi là bắt buộc bởi vì sau đó nó sẽ không bao giờ có thể có giá trị được lưu trữ trong sổ đăng ký hoặc tối ưu hóa giống nhau.
Đó không thực sự là phương tiện an toàn cho chủ đề. Thread-safe (thường) có nghĩa là nhiều cuộc gọi đến cùng một lớp/thư viện sẽ không làm mất đi dữ liệu tĩnh được lưu trữ bởi thư viện. –
Trong ví dụ của bạn, nếu tất cả những gì bạn muốn làm là gắn cờ một chuỗi khác, tôi không thấy những gì sẽ không hoạt động. –
@JonathonReinhart Vâng, tôi chỉ có nó như một lá cờ. Nếu đây không phải là chủ đề an toàn thì nó có đồng thời không? – Aidiakapi