Es un uso correcto de Thread.MemoryBarrier ()?

Supongo que tengo un campo que controla la ejecución de algún bucle:

private static bool shouldRun = true;

Y tengo un hilo en ejecución, que tiene un código como:

while(shouldRun) 
{
    // Do some work ....
    Thread.MemoryBarrier();
}

Ahora, otro hilo podría establecershouldRun afalse, sin utilizar ningún mecanismo de sincronización.

Hasta donde entiendo Thread.MemoryBarrier (), tener esta llamada dentro del ciclo while evitará que mi hilo de trabajo obtenga una versión en caché de lashouldRun, y evitando efectivamente que ocurra un bucle infinito.

¿Es correcto mi entendimiento sobre Thread.MemoryBarrier? Dado que tengo hilos que pueden establecer elshouldRun variable (esto no se puede cambiar fácilmente), ¿es esta una forma razonable de asegurar que mi ciclo se detendrá una vezshouldRun está establecido en falso por algún hilo?

Respuestas a la pregunta(10)

Su respuesta a la pregunta