el enfoque que he utilizado, y creo que es correcto, es
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;
}
}
}
el objetivo era básicamente evitar tener que bloquear repetidamente un objeto en cada iteración solo para verificar si necesitábamos bloquearlo para proporcionar una gran cantidad de información de cambio de estado que ocurre raramente. Creo que este enfoque funciona. Y si se requiere una consistencia absoluta, creo que lo volátil sería apropiado en el b bool.