同期関数

同期では、次の関数が使用されます。

非同期関数

非同期関数 説明
APCProc QueueUserAPC 関数と共に使用されるアプリケーション定義のコールバック関数。
GetOverlappedResult 重複した操作の結果を取得します。
GetOverlappedResultEx 指定したタイムアウト期間内に重複した操作の結果を取得します。
QueueUserAPC 指定したスレッドの APC キューにユーザー モードの非同期プロシージャ 呼び出し (APC) オブジェクトを追加します。

 

条件変数と SRW ロック関数

条件変数と SRW ロック関数 説明
AcquireSRWLockExclusive 排他モードでスリム リーダー/ライター (SRW) ロックを取得します。
AcquireSRWLockShared 共有モードでスリム リーダー/ライター (SRW) ロックを取得します。
InitializeConditionVariable 条件変数を初期化します。
InitializeSRWLock スリム リーダー/ライター (SRW) ロックを初期化します。
ReleaseSRWLockExclusive 排他モードで取得されたスリム リーダー/ライター (SRW) ロックを解放します。
ReleaseSRWLockShared 共有モードで取得されたスリム リーダー/ライター (SRW) ロックを解放します。
SleepConditionVariableCS 指定した条件変数をスリープ状態にし、指定したクリティカル セクションをアトミック操作として解放します。
SleepConditionVariableSRW 指定した条件変数をスリープ状態にし、指定したロックをアトミック操作として解放します。
TryAcquireSRWLockExclusive 排他モードでスリム リーダー/ライター (SRW) ロックの取得を試みます。 呼び出しが成功すると、呼び出し元のスレッドはロックの所有権を取得します。
TryAcquireSRWLockShared 共有モードでスリム リーダー/ライター (SRW) ロックの取得を試みます。 呼び出しが成功すると、呼び出し元のスレッドはロックの所有権を取得します。
WakeAllConditionVariable 指定した条件変数で待機しているすべてのスレッドをスリープ解除します。
WakeConditionVariable 指定した条件変数で待機している 1 つのスレッドをスリープ解除します。

 

クリティカル セクション関数

クリティカル セクション関数 説明
DeleteCriticalSection 未所有のクリティカル セクション オブジェクトによって使用されるすべてのリソースを解放します。
EnterCriticalSection 指定したクリティカル セクション オブジェクトの所有権を待機します。
InitializeCriticalSection クリティカル セクション オブジェクトを初期化します。
InitializeCriticalSectionAndSpinCount クリティカル セクション オブジェクトを初期化し、クリティカル セクションのスピン数を設定します。
InitializeCriticalSectionEx スピンカウントと省略可能なフラグを使用してクリティカル セクション オブジェクトを初期化します。
LeaveCriticalSection 指定したクリティカル セクション オブジェクトの所有権を解放します。
SetCriticalSectionSpinCount 指定したクリティカル セクションのスピン数を設定します。
TryEnterCriticalSection ブロックせずにクリティカル セクションの入力を試します。

 

イベント関数

イベント関数 説明
CreateEvent 名前付きまたは名前のないイベント オブジェクトを作成または開きます。
CreateEventEx 名前付きまたは名前のないイベント オブジェクトを作成または開き、オブジェクトへのハンドルを返します。
OpenEvent 既存の名前付きイベント オブジェクトを開きます。
PulseEvent 指定したイベント オブジェクトをシグナル状態に設定し、適切な数の待機スレッドを解放した後、非署名状態にリセットします。
ResetEvent 指定したイベント オブジェクトを非署名状態に設定します。
SetEvent 指定したイベント オブジェクトをシグナル状態に設定します。

 

1 回限り初期化関数

1 回限り初期化関数 説明
InitOnceBeginInitialize 1 回限り初期化を開始します。
InitOnceComplete 1 回限り初期化を完了します。
InitOnceExecuteOnce 指定した関数を 1 回正常に実行します。 同じ 1 回限りの初期化構造体を指定する他のスレッドは、現在のスレッドによって実行されている間、この関数を実行できません。
InitOnceInitialize 1 回限りの初期化構造体を初期化します。

 

インターロックされた関数

インターロックされた関数 説明
InterlockedAdd 指定した LONG 値に対してアトミック加算操作を実行します。
InterlockedAddAcquire 指定した LONG 値に対してアトミック加算操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedAddRelease 指定した LONG 値に対してアトミック加算操作を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedAddNoFence 指定した LONG 値に対してアトミック加算操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedAdd64 指定した LONGLONG 値に対してアトミック加算操作を実行します。
InterlockedAddAcquire64 指定した LONGLONG 値に対してアトミック加算操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedAddRelease64 指定した LONGLONG 値に対してアトミック加算操作を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedAddNoFence64 指定した LONGLONG 値に対してアトミック加算操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedAnd 指定した LONG 値に対してアトミック AND 演算を実行します。
InterlockedAndAcquire 指定した LONG 値に対してアトミック AND 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedAndRelease 指定した LONG 値に対してアトミック AND 演算を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedAndNoFence 指定した LONG 値に対してアトミック AND 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedAnd8 指定した char 値に対してアトミック AND 演算を実行します。
InterlockedAnd8Acquire 指定した char 値に対してアトミック AND 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedAnd8Release 指定した char 値に対してアトミック AND 演算を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedAnd8NoFence 指定した char 値に対してアトミック AND 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedAnd16 指定した SHORT 値に対してアトミック AND 演算を実行します。
InterlockedAnd16Acquire 指定した SHORT 値に対してアトミック AND 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedAnd16Release 指定した SHORT 値に対してアトミック AND 演算を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedAnd16NoFence 指定した SHORT 値に対してアトミック AND 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedAnd64 指定した LONGLONG 値に対してアトミック AND 操作を実行します。
InterlockedAnd64Acquire 指定した LONGLONG 値に対してアトミック AND 操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedAnd64Release 指定した LONGLONG 値に対してアトミック AND 操作を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedAnd64NoFence 指定した LONGLONG 値に対してアトミック AND 操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedBitTestAndComplement 指定した LONG 値の指定したビットをテストし、それを補完します。
InterlockedBitTestAndComplement64 指定した LONG64 値の指定したビットをテストし、それを補完します。 操作はアトミックです
InterlockedBitTestAndResetAcquire 指定した LONG 値の指定したビットをテストし、0 に設定します。 操作はアトミックであり、メモリの取得順序セマンティクスを使用して実行されます
InterlockedBitTestAndResetRelease 指定した LONG 値の指定したビットをテストし、0 に設定します。 操作はアトミックであり、メモリ 解放セマンティクスを使用して実行されます
InterlockedBitTestAndSetAcquire 指定した LONG 値の指定したビットをテストし、1 に設定します。 操作はアトミックであり、メモリの取得順序セマンティクスを使用して実行されます
InterlockedBitTestAndSetRelease 指定した LONG 値の指定したビットをテストし、1 に設定します。 操作はアトミックであり、解放メモリ順序セマンティクスを使用して実行されます
InterlockedBitTestAndReset 指定した LONG 値の指定したビットをテストし、0 に設定します。
InterlockedBitTestAndReset64 指定した LONG64 値の指定したビットをテストし、0 に設定します。
InterlockedBitTestAndSet 指定した LONG 値の指定したビットをテストし、1 に設定します。
InterlockedBitTestAndSet64 指定した LONG64 値の指定したビットをテストし、1 に設定します。
InterlockedCompare64Exchange128 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 64 ビット値を比較し、比較の結果に基づいて、指定された 128 ビット値と交換します。
InterlockedCompare64ExchangeAcquire128 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 64 ビット値を比較し、比較の結果に基づいて、指定された 128 ビット値と交換します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedCompare64ExchangeRelease128 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 64 ビット値を比較し、比較の結果に基づいて、指定された 128 ビット値と交換します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedCompareExchange 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 32 ビット値を比較し、比較の結果に基づいて別の 32 ビット値と交換します。
InterlockedCompareExchangeAcquire 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 32 ビット値を比較し、比較の結果に基づいて別の 32 ビット値と交換します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedCompareExchangeRelease 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 32 ビット値を比較し、比較の結果に基づいて別の 32 ビット値と交換します。 交換は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedCompareExchangeNoFence 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 32 ビット値を比較し、比較の結果に基づいて別の 32 ビット値と交換します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedCompareExchange64 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 64 ビット値を比較し、比較の結果に基づいて別の 64 ビット値と交換します。
InterlockedCompareExchangeAcquire64 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 64 ビット値を比較し、比較の結果に基づいて別の 64 ビット値と交換します。 交換は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedCompareExchangeRelease64 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 64 ビット値を比較し、比較の結果に基づいて別の 64 ビット値と交換します。 交換は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedCompareExchangeNoFence64 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 64 ビット値を比較し、比較の結果に基づいて別の 64 ビット値と交換します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedCompareExchange16 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 16 ビット値を比較し、比較の結果に基づいて別の 16 ビット値と交換します
InterlockedCompareExchange16Acquire 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 16 ビット値を比較し、比較の結果に基づいて別の 16 ビット値と交換します。 操作は、メモリの取得順序セマンティクスを使用して実行されます
InterlockedCompareExchange16Release 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 16 ビット値を比較し、比較の結果に基づいて別の 16 ビット値と交換します。 交換は、解放メモリ順序セマンティクスを使用して実行されます
InterlockedCompareExchange16NoFence 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 16 ビット値を比較し、比較の結果に基づいて別の 16 ビット値と交換します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedCompareExchange128 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つの 128 ビット値を比較し、比較の結果に基づいて別の 128 ビット値と交換します
InterlockedCompareExchangePointer 指定したポインター値に対してアトミックな比較と交換操作を実行します。 関数は、指定された 2 つのポインター値を比較し、比較の結果に基づいて別のポインター値と交換します。
InterlockedCompareExchangePointerAcquire 指定したポインター値に対してアトミックな比較と交換操作を実行します。 関数は、指定された 2 つのポインター値を比較し、比較の結果に基づいて別のポインター値と交換します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedCompareExchangePointerRelease 指定したポインター値に対してアトミックな比較と交換操作を実行します。 関数は、指定された 2 つのポインター値を比較し、比較の結果に基づいて別のポインター値と交換します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedCompareExchangePointerNoFence 指定した値に対してアトミックな比較および交換操作を実行します。 関数は、指定された 2 つのポインター値を比較し、比較の結果に基づいて別のポインター値と交換します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedDecrement 指定した 32 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。
InterlockedDecrementAcquire 指定した 32 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedDecrementRelease 指定した 32 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedDecrementNoFence 指定した 32 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedDecrement16 指定した 16 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します
InterlockedDecrement16Acquire 指定した 16 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作は、メモリの取得順序セマンティクスを使用して実行されます
InterlockedDecrement16Release 指定した 16 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作は、解放メモリ順序セマンティクスを使用して実行されます
InterlockedDecrement16NoFence 指定した 16 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedDecrement64 指定した 64 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。
InterlockedDecrementAcquire64 指定した 64 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedDecrementRelease64 指定した 64 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedDecrementNoFence64 指定した 64 ビット変数の値をアトミック操作としてデクリメント (1 ずつ減少) します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedExchange 32 ビット変数をアトミック操作として指定された値に設定します。
InterlockedExchangeAcquire 32 ビット変数をアトミック操作として指定された値に設定します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedExchangeNoFence 64 ビット変数をアトミック操作として指定された値に設定します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedExchange8 8 ビット変数をアトミック操作として指定された値に設定します
InterlockedExchange16 16 ビット変数をアトミック操作として指定された値に設定します。
InterlockedExchange16Acquire 16 ビット変数をアトミック操作として指定された値に設定します。 操作は、メモリの取得順序セマンティクスを使用して実行されます
InterlockedExchange16NoFence 16 ビット変数をアトミック操作として指定された値に設定します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedExchange64 64 ビット変数をアトミック操作として指定された値に設定します。
InterlockedExchangeAcquire64 32 ビット変数をアトミック操作として指定された値に設定します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedExchangeNoFence64 64 ビット変数をアトミック操作として指定された値に設定します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedExchangePointer ポインター値のペアをアトミックに交換します。
InterlockedExchangePointerAcquire ポインター値のペアをアトミックに交換します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedExchangePointerNoFence アドレスのペアをアトミックに交換します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedExchangeSubtract 2 つの値のアトミック減算を実行します。
InterlockedExchangeAdd 2 つの 32 ビット値のアトミック加算を実行します。
InterlockedExchangeAddAcquire 2 つの 32 ビット値のアトミック加算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedExchangeAddRelease 2 つの 32 ビット値のアトミック加算を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedExchangeAddNoFence 2 つの 32 ビット値のアトミック加算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedExchangeAdd64 2 つの 64 ビット値のアトミック加算を実行します。
InterlockedExchangeAddAcquire64 2 つの 64 ビット値のアトミック加算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedExchangeAddRelease64 2 つの 64 ビット値のアトミック加算を実行します。 操作は、解放メモリ順序セマンティクスを使用して実行されます。
InterlockedExchangeAddNoFence64 2 つの 64 ビット値のアトミック加算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedIncrement 指定した 32 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。
InterlockedIncrementAcquire 指定した 32 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedIncrementRelease 指定した 32 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 この操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedIncrementNoFence 指定した 32 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedIncrement16 指定した 16 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します
InterlockedIncrement16Acquire 指定した 16 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作は、メモリの取得順序セマンティクスを使用して実行されます
InterlockedIncrement16Release 指定した 16 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます
InterlockedIncrement16NoFence 指定した 16 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedIncrement64 指定した 64 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。
InterlockedIncrementAcquire64 指定した 64 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedIncrementRelease64 指定した 64 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 この操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedIncrementNoFence64 指定した 64 ビット変数の値をアトミック操作としてインクリメント (1 ずつ増加) します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedOr 指定した LONG 値に対してアトミック OR 演算を実行します。
InterlockedOrAcquire 指定した LONG 値に対してアトミック OR 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedOrRelease 指定した LONG 値に対してアトミック OR 演算を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedOrNoFence 指定した LONG 値に対してアトミック OR 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedOr8 指定した char 値に対してアトミック OR 演算を実行します。
InterlockedOr8Acquire 指定した char 値に対してアトミック OR 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedOr8Release 指定した char 値に対してアトミック OR 演算を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedOr8NoFence 指定した char 値に対してアトミック OR 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedOr16 指定した SHORT 値に対してアトミック OR 演算を実行します。
InterlockedOr16Acquire 指定した SHORT 値に対してアトミック OR 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedOr16Release 指定した SHORT 値に対してアトミック OR 演算を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedOr16NoFence 指定した SHORT 値に対してアトミック OR 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedOr64 指定した LONGLONG 値に対してアトミック OR 演算を実行します。
InterlockedOr64Acquire 指定した LONGLONG 値に対してアトミック OR 演算を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedOr64Release 指定した LONGLONG 値に対してアトミック OR 演算を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedOr64NoFence 指定した LONGLONG 値に対してアトミック OR 演算を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedXor 指定した LONG 値に対してアトミック XOR 操作を実行します。
InterlockedXorAcquire 指定した LONG 値に対してアトミック XOR 操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedXorRelease 指定した LONG 値に対してアトミック XOR 操作を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedXorNoFence 指定した LONG 値に対してアトミック XOR 操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedXor8 指定した char 値に対してアトミック XOR 操作を実行します。
InterlockedXor8Acquire 指定した char 値に対してアトミック XOR 操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedXor8Release 指定した char 値に対してアトミック XOR 操作を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedXor8NoFence 指定した char 値に対してアトミック XOR 操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedXor16 指定した SHORT 値に対してアトミック XOR 操作を実行します。
InterlockedXor16Acquire 指定した SHORT 値に対してアトミック XOR 操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedXor16Release 指定した SHORT 値に対してアトミック XOR 操作を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedXor16NoFence 指定した SHORT 値に対してアトミック XOR 操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません
InterlockedXor64 指定した LONGLONG 値に対してアトミック XOR 操作を実行します。
InterlockedXor64Acquire 指定した LONGLONG 値に対してアトミック XOR 操作を実行します。 操作は、メモリの取得順序セマンティクスを使用して実行されます。
InterlockedXor64Release 指定した LONGLONG 値に対してアトミック XOR 操作を実行します。 操作は、リリース メモリの順序付けセマンティクスを使用して実行されます。
InterlockedXor64NoFence 指定した LONGLONG 値に対してアトミック XOR 操作を実行します。 操作はアトミックに実行されますが、メモリ バリアは使用されません

 

ミューテックス関数

Mutex 関数 説明
CreateMutex 名前付きミューテックス オブジェクトまたは名前のないミューテックス オブジェクトを作成または開きます。
CreateMutexEx 名前付きミューテックス オブジェクトまたは名前のないミューテックス オブジェクトを作成または開き、オブジェクトへのハンドルを返します。
OpenMutex 既存の名前付きミューテックス オブジェクトを開きます。
ReleaseMutex 指定したミューテックス オブジェクトの所有権を解放します。

 

プライベート名前空間関数

プライベート名前空間関数 説明
AddSIDToBoundaryDescriptor 指定した境界記述子に新しいセキュリティ識別子 (SID) を追加します。
AddIntegrityLabelToBoundaryDescriptor 指定した境界記述子に新しい必須セキュリティ識別子 (SID) を追加します。
ClosePrivateNamespace 開いている名前空間ハンドルを閉じます。
CreateBoundaryDescriptor 境界記述子を作成します。
CreatePrivateNamespace プライベート名前空間を作成します。
DeleteBoundaryDescriptor 指定した境界記述子を削除します。
OpenPrivateNamespace プライベート名前空間を開きます。

 

セマフォ関数

Semaphore 関数 説明
CreateSemaphore 名前付きセマフォ オブジェクトまたは名前のないセマフォ オブジェクトを作成または開きます。
CreateSemaphoreEx 名前付きセマフォ オブジェクトまたは名前のないセマフォ オブジェクトを作成または開き、オブジェクトへのハンドルを返します。
OpenSemaphore 既存の名前付きセマフォ オブジェクトを開きます。
ReleaseSemaphore 指定したセマフォ オブジェクトの数を指定した量だけ増やします。

 

1 つのリンクされたリスト関数

1 つのリンクされたリスト関数 説明
InitializeSListHead 1 つのリンクされたリストの先頭を初期化します。
InterlockedFlushSList 1 つのリンクされたリスト内の項目のリスト全体をフラッシュします。
InterlockedPopEntrySList 1 つのリンクリストの先頭から項目を削除します。
InterlockedPushEntrySList 1 つのリンクリストの先頭に項目を挿入します。
InterlockedPushListSList 1 つのリンクされたリストを、1 つのリンクされた別のリストの先頭に挿入します。
InterlockedPushListSListEx 1 つのリンクされたリストを、1 つのリンクされた別のリストの先頭に挿入します。 リストへのアクセスは、マルチプロセッサ システムで同期されます。 このバージョンの メソッドでは、 __fastcall 呼び出し規約は使用されません
QueryDepthSList 指定した 1 つのリンク リスト内のエントリの数を取得します。
RtlFirstEntrySList 1 つのリンクされたリストの最初のエントリを取得します。
RtlInitializeSListHead 1 つのリンクされたリストの先頭を初期化します。 アプリケーションでは、代わりに InitializeSListHead を呼び出す必要があります。
RtlInterlockedFlushSList 1 つのリンクされたリスト内の項目のリスト全体をフラッシュします。 アプリケーションでは、代わりに InterlockedFlushSList を呼び出す必要があります。
RtlInterlockedPopEntrySList 1 つのリンクリストの先頭から項目を削除します。 アプリケーションでは、代わりに InterlockedPopEntrySList を呼び出す必要があります。
RtlInterlockedPushEntrySList 1 つのリンクリストの先頭に項目を挿入します。 アプリケーションでは、代わりに InterlockedPushEntrySList を呼び出す必要があります。
RtlQueryDepthSList 指定した 1 つのリンク リスト内のエントリの数を取得します。 アプリケーションでは、代わりに QueryDepthSList を 呼び出す必要があります。

 

同期バリア関数

同期バリア関数 説明
DeleteSynchronizationBarrier 同期バリアを削除します。
EnterSynchronizationBarrier 同期バリアを入力し、適切な数のスレッドがバリアでランデブされるまで待機します。
InitializeSynchronizationBarrier 新しい同期バリアを初期化します。

 

タイマー キュー タイマー関数

タイマー キュー タイマー関数 説明
ChangeTimerQueueTimer タイマー キュー タイマーを更新します。
CreateTimerQueue タイマーのキューを作成します。
CreateTimerQueueTimer タイマー キュー タイマーを作成します。
DeleteTimerQueue タイマー キューを削除します。
DeleteTimerQueueEx タイマー キューを削除します。
DeleteTimerQueueTimer タイマー キュー タイマーを取り消します。

 

待機関数

Wait 関数 説明
MsgWaitForMultipleObjects 指定したオブジェクトの 1 つまたはすべてをシグナル状態にするか、タイムアウト間隔が経過するまで待機します。 オブジェクトには、入力イベント オブジェクトを含めることができます。
MsgWaitForMultipleObjectsEx 指定したオブジェクトの 1 つ以上がシグナル状態になるまで待機します。I/O 完了ルーチンまたは非同期プロシージャ呼び出し (APC) がスレッドにキューに入れられているか、タイムアウト間隔が経過します。 オブジェクトの配列には、入力イベント オブジェクトを含めることができます。
RegisterWaitForSingleObject オブジェクトで待機するようにスレッド プール内の待機スレッドを指示します。
SignalObjectAndWait 1 つのオブジェクトにシグナルを送信し、別のオブジェクトを 1 つの操作として待機します。
UnregisterWait 登録済みの待機操作を取り消します。
UnregisterWaitEx 登録済みの待機操作を取り消します。
WaitForMultipleObjects 指定したオブジェクトの 1 つ以上がシグナル状態であるか、タイムアウト間隔が経過するまで待機します。
WaitForMultipleObjectsEx 指定されたオブジェクトの 1 つ以上がシグナル状態になるまで待機します。I/O 完了ルーチンまたは非同期プロシージャ 呼び出し (APC) がスレッドにキューに入れられているか、タイムアウト間隔が経過します。
WaitForSingleObject 指定したオブジェクトがシグナル状態であるか、タイムアウト間隔が経過するまで待機します。
WaitForSingleObjectEx 指定したオブジェクトがシグナル状態になるまで待機します。I/O 完了ルーチンまたは非同期プロシージャ呼び出し (APC) がスレッドにキューに入れられるか、タイムアウト間隔が経過します。
WaitOnAddress 指定したアドレスの値が変更されるまで待機します。
WaitOrTimerCallback タイマー コールバックまたは登録済み待機コールバックの開始アドレスとして機能するアプリケーション定義関数。
WakeByAddressAll アドレスの値が変更されるのを待機しているすべてのスレッドをスリープ解除します。
WakeByAddressSingle アドレスの値が変更されるのを待機しているスレッドをスリープ解除します。

 

待機可能タイマー関数

Waitable-timer 関数 説明
CancelWaitableTimer 指定された待機可能タイマーを非アクティブ状態に設定します。
CreateWaitableTimer 待機可能なタイマー オブジェクトを作成または開きます。
CreateWaitableTimerEx 待機可能なタイマー オブジェクトを作成または開き、オブジェクトへのハンドルを返します。
OpenWaitableTimer 既存の名前付き待機可能タイマー オブジェクトを開きます。
SetWaitableTimer 指定した待機可能タイマーをアクティブにします。
SetWaitableTimerEx 指定された待機可能タイマーをアクティブ化し、タイマーのコンテキスト情報を提供します。 .
TimerAPCProc SetWaitableTimer 関数で使用されるアプリケーション定義タイマー完了ルーチン。