共用方式為


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)
程式庫 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

同步處理函式