подход, который я использовал и считаю правильным,
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;
}
}
}
Основная цель заключалась в том, чтобы избежать многократной блокировки объекта на каждой итерации, чтобы проверить, нужно ли блокировать его, чтобы предоставить большой объем информации об изменении состояния, что происходит редко. Я думаю , что этот подход работает. И если требуется абсолютная согласованность, я думаю , что volatile будет уместным для b bool.