Подтвердить что ты не робот

Interlocked.Exchange, но не для boolean?

Существует ли эквивалент для Interlocked.Exchange для булевых?

Как атомный обмен значениями, которые возвращают предыдущее значение и не требуют блокировок?

4b9b3361

Ответ 1

Нет; используйте целые числа вместо booleans.

В принципе, такая вещь может быть написана (cmpxchg, основная инструкция процессора, может работать с 8, 16, 32 и 64-битными операндами на x86, 8, 16, 32, 64 и 128-битных операндах на x64), но на практике большинство API-интерфейсов имеют указатели на указатель и двойной указатель (32 и 64-разрядные на х86, 64 и 128-разрядные на x64) операндах, потому что все они вам действительно нужны.