InterlockedExchangePointer 函数 (winnt.h)
以原子方式交换一对地址。
语法
PVOID InterlockedExchangePointer(
[in, out] PVOID volatile *Target,
[in] PVOID Value
);
参数
[in, out] Target
指向要交换的地址的指针。 该函数将 Target 参数(*Target
)指向的地址设置为 Value 参数的值,并返回 Target 参数的先前值。
[in] Value
要与 目标 参数(*Target
)指向的地址交换的地址。
返回值
该函数返回 Target 参数指向的初始地址。
言论
此函数将作为第二个参数传递的地址复制到第一个地址,并返回第一个参数的原始地址。
在 64 位系统上,参数为 64 位,目标 参数必须在 64 位边界上对齐;否则,函数的行为将不可预知。 在 32 位系统上,参数为 32 位,目标 参数必须在 32 位边界上对齐。
联锁函数提供了一种简单的机制,用于同步对多个线程共享的变量的访问。 对于对其他互锁函数的调用,此函数是原子的。
此函数尽可能使用编译器内部函数实现。 有关详细信息,请参阅 WinBase.h 头文件和 _InterlockedExchangePointer。
此函数生成完整的内存屏障(或围栏),以确保按顺序完成内存操作。
基于 Itanium 的系统:对于性能关键型应用程序,请改用 InterlockedExchangePointerAcquire。
注意 基于 Windows RT 的系统支持此函数。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2003 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | winnt.h (包括 Windows.h) |
另请参阅
InterlockedExchangePointerAcquire