interlockedExchangePointer 函数 (winnt.h)

以原子方式交换一对地址。

语法

PVOID InterlockedExchangePointer(
  [in, out] PVOID volatile *Target,
  [in]      PVOID          Value
);

参数

[in, out] Target

指向要交换的地址的指针。 函数将 Target 参数指向的地址 (*Target) 设置为 Value 参数值的地址,并返回 Target 参数的先前值。

[in] Value

要与 Target 参数指向的地址交换的地址 (*Target) 。

返回值

函数返回 Target 参数指向的初始地址。

注解

此函数将作为第二个参数传递的地址复制到第一个参数,并返回第一个参数的原始地址。

在 64 位系统上,参数为 64 位, Target 参数必须在 64 位边界上对齐;否则,函数的行为将不可预知。 在 32 位系统上,参数为 32 位, Target 参数必须在 32 位边界上对齐。

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

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

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

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

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

要求

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

另请参阅

互锁变量访问

InterlockedCompareExchange

InterlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

同步函数