Есть ли эквивалент Interlocked.Exchange для логического?
Например, атомарный обмен значениями, который возвращает предыдущее значение и не требует блокировок?





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