Der Ansatz, den ich verwendet habe und den ich für richtig halte, ist
volatile bool b = false;
.. rarely signal an update with a large state change...
lock b_lock
{
b = true;
//other;
}
... another thread ...
if(b)
{
lock b_lock
{
if(b)
{
//other stuff
b = false;
}
}
}
Das Ziel bestand im Wesentlichen darin, zu vermeiden, dass ein Objekt bei jeder Iteration wiederholt gesperrt werden muss, um zu überprüfen, ob es gesperrt werden muss, um eine große Menge an Statusänderungsinformationen bereitzustellen, die selten vorkommen. Ich denke, dieser Ansatz funktioniert. Und wenn absolute Konsistenz erforderlich ist, denke ich, dass Volatilität auf dem B- Bool angemessen wäre.