Реализация критической секции на Interlocked.Exchange
От: SergeyGubanov Россия http://SergeyGubanov.narod.ru/
Дата: 16.06.08 13: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;
}

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

(Кстати, он почти в два раза быстрее работает... )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.