为什么InterlockedCompareExchange不返回更改的值?

Ben*_*min 0 windows winapi synchronization atomic interlocked

LONG __cdecl InterlockedCompareExchange(
  __inout  LONG volatile *Destination,
  __in     LONG Exchange,
  __in     LONG Comparand
);
Run Code Online (Sandbox Code Playgroud)

返回值
函数返回Destination参数的初始值。

只是好奇。
为什么InterlockedCompareExchange返回初始值?他们这样做是有原因的吗?

Hen*_*rik 5

因为这样可以为您提供最多的信息。如果您只知道更改后的值并且恰好等于Exchange该值,则初始值可以是Exchange或可以是Comparand