interlockedExchange 函数 (winnt.h)

将 32 位变量设置为指定值作为原子操作。

若要对指针变量进行操作,请使用 InterlockedExchangePointer 函数。

若要对 16 位变量进行操作,请使用 InterlockedExchange16 函数。

若要对 64 位变量进行操作,请使用 InterlockedExchange64 函数。

语法

LONG InterlockedExchange(
  [in, out] LONG volatile *Target,
  [in]      LONG          Value
);

参数

[in, out] Target

指向要交换的值的指针。 函数将此变量设置为 Value,并返回其以前的值。

[in] Value

要与 Target 指向的值交换的值。

返回值

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

注解

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

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

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

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

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

要求

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

另请参阅

互锁变量访问

InterlockedCompareExchange

InterlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeAdd64

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointer

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

同步函数