InterlockedCompareExchange
入力値を比較値とアトミックに比較して、その結果を交換します。
void
InterlockedCompareExchange(
R dest,
T compare_value,
T value,
T original_value
);
パラメータ
- dest
目的とする場所のアドレス。 - compare_value
比較値。 - value
入力値。 - original_value
(省略可能)元の値。
戻り値
なし
解説
dest の値と compare_value をアトミックに比較し、それらの値が一致すれば value を dest に格納し、dest の元の値を original_value に格納します。この操作は、int 型または uint 型のリソースおよび共有メモリー変数についてのみ実行できます。この関数には 3 種類の用途があります。1 番目は、R が共有メモリー変数型である場合です。この場合、この関数は、dest で参照されている共有メモリーのレジスタに対してこの操作を実行します。2 番目のシナリオは、R がリソース変数型である場合です。このシナリオでは、この関数は、dest で参照されているリソースの場所に対してこの操作を実行します。3 番目のシナリオは、R がローカル変数型である場合です。このシナリオでは、ローカル操作を使用して実行する単純な処理となります。この操作は、R が読み書きできる場合にのみ可能です。
最低限必要なシェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポート |
---|---|
シェーダー モデル 5 以上のシェーダー モデル | ○ |
この関数は、次の種類のシェーダーでサポートされています。
頂点 | ハル | ドメイン | ジオメトリ | ピクセル | 演算 |
---|---|---|---|---|---|
x | x |