Zastanawiam się tylko, czy ten kod, który inny programista (który odszedł) jest OK, myślę, że chciał uniknąć blokady. Czy istnieje różnica w wydajności między tym a zwykłym blokowaniem?Blokowane używane do zwiększania/naśladowania wartości logicznej, czy jest to bezpieczne?
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; }
}
Myślałem, że coś takiego będzie łatwiejsze z zamkiem? Będzie on rzeczywiście używany przez wiele wątków, dlatego też zdecydowano o użyciu blokowania/blokowania.
@Jon: Jestem ciekawa, czy możesz rozwinąć "niestabilność, nie oznacza całkiem, co myślałem, że to zrobiło"? – LukeH
@Luke: Planuję szczegółowo omówić go w poście na blogu, ale większość z nich to http://www.bluebytesoftware.com/blog/2008/06/13/VolatileReadsAndWritesAndTimeliness.aspx. –
Dla podkreślenia, niestabilna długość nie byłaby ** bezpieczna (w systemie 32-bitowym). –