_InterlockedXor、_InterlockedXor64

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]

Microsoft 固有の仕様 →

複数のスレッドが共有する変数の分割不可能な操作 (この場合はXOR の排他的 OR 演算) 実行するために使用します。

long _InterlockedXor(
   long volatile * Value,
   long Mask
);
long _InterlockedXor_acq(
   long volatile * Value,
   long Mask
);
long _InterlockedXor_rel(
   long volatile * Value,
   long Mask
);
char _InterlockedXor8(
   char volatile * Value,
   char Mask
);
char _InterlockedXor8_acq(
   char volatile * Value,
   char Mask
);
char _InterlockedXor8_rel(
   char volatile * Value,
   char Mask
);
short _InterlockedXor16(
   short volatile * Value,
   short Mask
);
short _InterlockedXor16_acq(
   short volatile * Value,
   short Mask
);
short _InterlockedXor16_rel(
   short volatile * Value,
   short Mask
);
__int64 _InterlockedXor64(
   __int64 volatile * Value,
   __int64 Mask
);
__int64 _InterlockedXor64_acq(
   __int64 volatile * Value,
   __int64 Mask
);
__int64 _InterlockedXor64_rel(
   __int64 volatile * Value,
   __int64 Mask
);

パラメーター

  • [入力、出力] Value
    1 番目のオペランドへのポインター結果を置換します。

  • [入力] Mask
    2 番目のオペランド。

戻り値

1 番目のオペランドの元の値。

必要条件

組み込み

アーキテクチャ

_InterlockedXor

x86IPFx64

_InterlockedXor_acq

IPF

_InterlockedXor_rel

IPF

_InterlockedXor8

x86IPFx64

_InterlockedXor8_acq

IPF

_InterlockedXor8_rel

IPF

_InterlockedXor16

x86IPFx64

_InterlockedXor16_acq

IPF

_InterlockedXor16_rel

IPF

_InterlockedXor64

はx64

_InterlockedXor64_acq

IPF

_InterlockedXor64_rel

IPF

ヘッダー ファイル <intrin.h>

解説

各関数の名前の数は引数のビット サイズを指定します。

これらの関数は読み書き可能メモリ バリアとして機能します。 詳細については_ReadWriteBarrier を参照してください。

IPF 固有 _InterlockedXor_acq_InterlockedXor8_acq_InterlockedXor16_acq_InterlockedXor64_acq の組み込み関数は acq のサフィックスが操作の対応する関数が取得したりのセマンティクスを場合と同じです。クリティカル セクションに入るとき。

_InterlockedXor_rel _InterlockedXor8_rel _InterlockedXor16_rel_InterlockedXor64_rel の組み込み関数は rel のサフィックスが操作の対応する関数を使用すると便利リリースのセマンティクスは同じです。クリティカル セクションを離れる場合。

使用例

// _InterLockedXor.cpp
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(_InterlockedXor)

int main()
{
        long data1 = 0xFF00FF00;
        long data2 = 0x00FFFF00;
        long retval;
        retval = _InterlockedXor(&data1, data2);
        printf_s("0x%x 0x%x 0x%x", data1, data2, retval); 
}
          
        

参照

Reference

コンパイラ組み込み関数。

その他の技術情報

Conflicts with the x86 Compiler