interlockedCompareExchange64 函数 (winnt.h)

对指定的值执行原子比较和交换操作。 函数比较两个指定的 64 位值,并根据比较结果与另一个 64 位值交换。

语法

LONG64 InterlockedCompareExchange64(
  [in, out] LONG64 volatile *Destination,
  [in]      LONG64          ExChange,
  [in]      LONG64          Comperand
);

参数

[in, out] Destination

指向目标值的指针。

[in] ExChange

交换值。

[in] Comperand

要与 Destination 进行比较的值。

返回值

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

注解

函数将 Destination 值与 Comparand 值进行比较。 如果 Destination 值等于 Comparand 值,则 Exchange 值存储在 Destination 指定的地址中。 否则,不会执行任何操作。

此函数的变量必须在 64 位边界上对齐;否则,此函数在多处理器 x86 系统和任何非 x86 系统上的行为将不可预知。 请参阅 _aligned_malloc

互锁函数提供了一种简单机制,用于同步对由多个线程共享的变量的访问。 对于对其他互锁函数的调用,此函数是原子的。

此函数是尽可能使用编译器内部函数实现的。 有关详细信息,请参阅 WinBase.h 头文件和 _InterlockedCompareExchange64

此函数生成完整的内存屏障 (或围栏) ,以确保按顺序完成内存操作。

基于 Itanium 的系统: 对于性能关键型应用程序,请改用 InterlockedCompareExchangeAcquire64InterlockedCompareExchangeRelease64

注意基于 Windows RT 的系统支持此函数。
 

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winnt.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

互锁变量访问

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

同步函数