C++ 为什么没有联锁交换?

C++ 为什么没有联锁交换?,c++,windows,winapi,C++,Windows,Winapi,在WindowsAPI上,有 联锁交换添加 InterlockedExchangeAdd64 联锁交换减法 为什么没有联锁交换64 我想对64位值(LONGLONG)执行原子操作,而不必使用互斥锁。只需对传递给InterlockedExchangeAdd64的操作数求反即可。换句话说,使用x-y等于x+(-y)这一事实,因为这是不必要的。@johndilling也许一个更好的问题是InterlocatedExchangeSubtract为什么存在!;-)@DavidHeffernan:的确。

在WindowsAPI上,有

  • 联锁交换添加
  • InterlockedExchangeAdd64
  • 联锁交换减法
为什么没有
联锁交换64


我想对64位值(
LONGLONG
)执行原子操作,而不必使用互斥锁。

只需对传递给
InterlockedExchangeAdd64
的操作数求反即可。换句话说,使用
x-y
等于
x+(-y)

这一事实,因为这是不必要的。@johndilling也许一个更好的问题是
InterlocatedExchangeSubtract
为什么存在!;-)@DavidHeffernan:的确。InterlocatedExchangeSubtract用于处理加数为INT_MIN的情况。当加数为INT_MIN时,对加数求反并使用InterlocatedExchangeAdd会调用未定义的行为。我会支持你的答案,但我的声誉还不够好。谢谢你!如果有人给你y=INT\u MIN,你就通过否定它来调用未定义的行为。