2014-01-13 65 views
2

在WindowsAPI的,有爲什麼沒有InterlockedExchangeSubtract64?

  • InterlockedExchangeAdd
  • InterlockedExchangeAdd64
  • InterlockedExchangeSubtract

爲什麼沒有InterlockedExchangeSubtract64

我想在64位值(LONGLONG)上執行原子操作,而不必使用互斥鎖。

+0

因爲沒有必要。 –

+1

@JohnDibling也許更好的問題是爲什麼'InterlockedExchangeSubtract'存在! ;-) –

+0

@DavidHeffernan:確實。 –

回答

9

簡單地否定您傳遞給InterlockedExchangeAdd64的操作數。換句話說,使用x - y等於x + (-y)的事實。

+0

我會盡快回復您的答案,但我還沒有足夠好的聲望。雖然謝謝! –

+0

如果有人給你y = INT_MIN,你可以通過否定它來調用未定義的行爲。 – jonesmz