Реализация критической секции на Interlocked.Exchange в избранное  новое всё   подписка   модер. 
От: SergeyGubanovhttp://SergeyGubanov.narod.ru/
Дата: 16.06.08 12:06
Реализация критической секции на Interlocked.Exchange

Объясните пожалуйста, а то никак не могу врубиться, почему ежели я реализую критическую секцию используя атомарную операцию обмена, то MSDN рекомендует писать так:
if (System.Threading.Interlocked.Exchange(ref flag, 1) == 0)
{
  // ...
  System.Threading.Interlocked.Exchange(ref flag, 0);
}

а почему бы не написать попроще:
if (System.Threading.Interlocked.Exchange(ref flag, 1) == 0)
{
  // ...
  flag = 0;
}

Второй вариант правильный или нет?

(Кстати, он почти в два раза быстрее работает... )