_InterlockedAnd、_InterlockedAnd64
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]
Microsoft 固有の仕様 →
複数のスレッドが共有する変数をアトミック操作と操作を実行するために使用します。
long _InterlockedAnd(
long volatile * value,
long mask
);
long _InterlockedAnd_acq(
long volatile * value,
long mask
);
long _InterlockedAnd_rel(
long volatile * value,
long mask
);
char _InterlockedAnd8(
char volatile * value,
char mask
);
char _InterlockedAnd8_acq(
char volatile * value,
char mask
);
char _InterlockedAnd8_rel(
char volatile * value,
char mask
);
short _InterlockedAnd16(
short volatile * value,
short mask
);
short _InterlockedAnd16_acq(
short volatile * value,
short mask
);
short _InterlockedAnd16_rel(
short volatile * value,
short mask
);
__int64 _InterlockedAnd64(
__int64 volatile* value,
__int64 mask
);
__int64 _InterlockedAnd64_acq(
__int64 volatile* value,
__int64 mask
);
__int64 _InterlockedAnd64_rel(
__int64 volatile* value,
__int64 mask
);
パラメーター
[入力出力]value
1 番目のオペランドへのポインター結果を置換します。[入力] mask
2 番目のオペランド。
戻り値
1 番目のオペランドの元の値。
必要条件
組み込み |
アーキテクチャ |
---|---|
_InterlockedAnd |
x86IPFx64 |
_InterlockedAnd_acq |
IPF |
_InterlockedAnd_rel |
IPF |
_InterlockedAnd8 |
x86IPFx64 |
_InterlockedAnd8_acq |
IPF |
_InterlockedAnd8_rel |
IPF |
_InterlockedAnd16 |
x86IPFx64 |
_InterlockedAnd16_acq |
IPF |
_InterlockedAnd16_rel |
IPF |
_InterlockedAnd64 |
はx64 |
_InterlockedAnd64_acq |
IPF |
_InterlockedAnd64_rel |
IPF |
ヘッダー ファイル <intrin.h>
解説
各関数の名前の数は引数のビット サイズを指定します。
これらの関数は読み書き可能メモリ バリアとして機能します。 詳細については_ReadWriteBarrier を参照してください。
IPF 固有 _InterlockedAnd_acq_InterlockedAnd8_acq_InterlockedAnd16_acq と _InterlockedAnd64_acq の組み込み関数は acq のサフィックスが操作の対応する関数が取得したりのセマンティクスを場合と同じです。クリティカル セクションに入るとき。
_InterlockedAnd_rel _InterlockedAnd8_rel _InterlockedAnd16_rel と _InterlockedAnd64_rel の組み込み関数は rel のサフィックスが操作の対応する関数を使用すると便利リリースのセマンティクスは同じです。クリティカル セクションを離れる場合。
使用例
// InterlockedAnd.cpp
// Compile with: /Oi
#include <stdio.h>
#include <intrin.h>
#pragma intrinsic(_InterlockedAnd)
int main()
{
long data1 = 0xFF00FF00;
long data2 = 0x00FFFF00;
long retval;
retval = _InterlockedAnd(&data1, data2);
printf_s("0x%x 0x%x 0x%x", data1, data2, retval);
}