cách tiếp cận mà tôi đã sử dụng và tôi nghĩ là đúng, là
volatile bool b = false;
.. rarely signal an update with a large state change...
lock b_lock
{
b = true;
}
... another thread ...
if(b)
{
lock b_lock
{
if(b)
{
b = false;
}
}
}
mục đích về cơ bản là để tránh phải khóa lặp đi lặp lại một đối tượng trên mỗi lần lặp chỉ để kiểm tra xem chúng ta có cần khóa nó hay không để cung cấp một lượng lớn thông tin thay đổi trạng thái hiếm khi xảy ra. Tôi nghĩ rằng cách tiếp cận này hiệu quả. Và nếu cần nhất quán tuyệt đối, tôi nghĩ rằng tính dễ bay hơi sẽ phù hợp với b bool.