Interlocked.Exchange, но не для логических значений?
-
09-06-2019 - |
Вопрос
Есть ли эквивалент для Interlocked.Exchange
для логического значения?
Например, атомарный обмен значениями, который возвращает предыдущее значение и не требует блокировок?
Решение
Нет;используйте целые числа вместо логических значений.
В принципе, такую вещь можно было бы написать (cmpxchg, базовая инструкция процессора, может работать с 8, 16, 32 и 64-битными операндами в x86, 8, 16, 32, 64 и 128-битными операндами в x64), но на практике большинство API придерживаются операндов-указателей и двойных указателей (32- и 64-битные на x86, 64- и 128-битные на x64), потому что это все, что вам действительно нужно.
Не связан с StackOverflow