recientemente he visto este código en un sitio web, y mi pregunta es la siguiente:Bloqueando una sola variable bool cuando multihilo?
private bool mbTestFinished = false;
private bool IsFinished()
{
lock(mLock)
{
return mbTestFinished;
}
}
internal void SetFinished()
{
lock(mLock)
{
mbTestFinished = true;
}
}
En un entorno multi-hilo, que es realmente necesario para bloquear el acceso al mbTestFinished
?
Es el mecanismo más comprobable para garantizar que no sea una lectura en caché de CPU (que no funcionaría bien entre subprocesos) - 'volátil' también funcionaría, pero por razones demasiado complejas (este no es el * intención * de 'volátil', sino más bien: un efecto secundario) –
@MarcGravell Siempre he pensado que _was_ la intención de' volátil'; ¿Hay alguna posibilidad de que arrojes un buen enlace que explique qué es? –
@romkyns: Esta [respuesta] (http://stackoverflow.com/a/4103879/158779) proporciona algunas ideas. –