Me pregunto si este código que un desarrollador compañero (que se ha ido) está bien, creo que quería evitar poner un candado. ¿Hay una diferencia de rendimiento entre esto y solo usar un bloqueo directo?Interbloqueado utilizado para incrementar/imitar un booleano, ¿es esto seguro?
private long m_LayoutSuspended = 0;
public void SuspendLayout()
{
Interlocked.Exchange(ref m_LayoutSuspended, 1);
}
public void ResumeLayout()
{
Interlocked.Exchange(ref m_LayoutSuspended, 0);
}
public bool IsLayoutSuspended
{
get { return Interlocked.Read(ref m_LayoutSuspended) != 1; }
}
¿Estaba pensando que algo así sería más fácil con un candado? De hecho, será utilizado por varios hilos, por lo que se decidió el uso de bloqueo/enclavamiento.
@Jon: Tengo curiosidad, ¿pueden dar más detalles sobre "volátil no significa exactamente lo que pensé que era"? – LukeH
@Luke: estoy planeando detallarlo en una publicación de blog en algún momento, pero http://www.bluebytesoftware.com/blog/2008/06/13/VolatileReadsAndWritesAndTimeliness.aspx es la mayor parte. –
Solo para enfatizar, una longitud volátil sería ** no ** segura (en un sistema de 32 bits). –