Вот, ежели я реализую критическую секцию используя атомарную операцию обмена, то 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;
}
```

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