InterlockedCompareExchangePointer 函数 (winnt.h)
对指定值执行原子比较和交换操作。 函数比较两个指定的指针值,并根据比较结果与另一个指针值交换。
若要对非指针值进行操作,请使用 InterlockedCompareExchange 函数。
语法
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
参数
[in, out] Destination
指向指向目标值的指针的指针。
[in] Exchange
交换值。
[in] Comperand
要与 Destination 进行比较的值。
返回值
函数返回 Destination 参数的初始值。
注解
函数将 Destination 值与 Compareand 值进行比较。 如果 Destination 值等于 Compareand 值, 则 Exchange 值将存储在 Destination 指定的地址中。 否则,不会执行任何操作。
在 64 位系统上,参数为 64 位,必须在 64 位边界上对齐;否则,函数的行为将不可预知。 在 32 位系统上,这些参数都是 32 位并且必须在 32 位边界上对齐。
互锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。 对于对其他互锁函数的调用,此函数是原子函数。
如果可能,此函数是使用编译器内部函数实现的。 有关详细信息,请参阅 WinBase.h 头文件和 _InterlockedCompareExchangePointer。
此函数 (或围栏) 生成完整的内存屏障,以确保按顺序完成内存操作。
基于 Itanium 的系统: 对于性能关键型应用程序,请改用 InterlockedCompareExchangePointerAcquire 或 InterlockedCompareExchangePointerRelease 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | winnt.h (包括 Windows.h) |
另请参阅
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease