Interlocked.Exchange, aber nicht für booleans?


11

Gibt es ein Äquivalent für Interlocked.Exchange für Boolean?

Wie ein atomarer Austausch von Werten, der den vorherigen Wert zurückgibt und keine Sperren erfordert?

8

Nein; Verwenden Sie Ganzzahlen anstelle von Booleschen Werten.

Im Prinzip könnte so etwas geschrieben werden (cmpxchg, der zugrunde liegende Prozessorbefehl, kann mit 8, 16, 32 und 64-Bit-Operanden auf x86-, 8-, 16-, 32-, 64- und 128-Bit-Operanden arbeiten) auf x64), aber in der Praxis halten sich die meisten APIs an Zeiger und Doppelzeiger (32 und 64-Bit auf x86, 64 und 128-Bit auf x64) Operanden, weil sie alles sind, was Sie wirklich brauchen.