InterlockedCompareExchange 関数
入力と比較値を比較し、結果をアトミックに交換します。
構文
void InterlockedCompareExchange(
in UINT dest,
in UINT compare_value,
in UINT value,
out UINT original_value
);
パラメーター
-
dest [in]
-
型: UINT
宛先アドレス。
-
compare_value [in]
-
型: UINT
比較値。
-
value [in]
-
型: UINT
入力値。
-
original_value [out]
-
型: UINT
元の値。
戻り値
この関数は値を返しません。
注釈
dest の値をcompare_valueとアトミックに比較し、値が一致する場合は dest に値を格納し、original_valueで dest の元の値を返します。 この操作は、 int 型または uint 型指定されたリソースと共有メモリ変数に対してのみ実行できます。 この関数には、3 つの使用が考えられます。 1 つ目は、R が共有メモリ変数型の場合です。 この場合、関数は dest によって参照される共有メモリ レジスタに対して操作を実行します。 2 つ目のシナリオは、R がリソース変数の種類である場合です。 このシナリオでは、関数は dest によって参照されるリソースの場所に対して操作を実行します。 最後に、3 番目のシナリオは、R がローカル変数型の場合です。 このシナリオでは、関数はローカル操作を使用して実行される操作に減ります。 この操作は、R が読み取り可能で書き込み可能な場合にのみ使用できます。
Note
for またはwhile コンピューティング シェーダー ループで InterlockedCompareExchange を呼び出す場合は、適切にコンパイルするには、そのループで [allow_uav_condition] 属性を使用する必要があります。
この関数は、次の種類のシェーダーでサポートされています。
VS | HS | DS | GS | PS | CS |
---|---|---|---|---|---|
x | x | x | x | x | x |
関連項目