Du solltest dir einmal anschauen was es da noch alles für Interlocked-Funktionen gibt.
Unter anderem InterlockedExchange, InterlockedAnd, InterlockedXor, ...
Siehe Dokumentation:
http://msdn.microsoft.com/en-us/library/ms683614.aspx
// EDIT:
Allerdings könnte ein anderer Thread trotzdem den Wert zwischen den beiden Operationen auslesen.