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的原始值。 此作業只能在 intuint 型別資源和共用記憶體變數上執行。 此函式有三個可能的用法。 第一個是當 R 是共用記憶體變數類型時。 在此情況下,函式會在 dest所參考的共用記憶體暫存器上執行作業。 第二個案例是當 R 是資源變數類型時。 在此案例中,函式會在 dest所參考的資源位置上執行作業。 最後,第三個案例是 R 是區域變數類型。 在此案例中,函式會減少為使用本機作業執行的作業。 只有在 R 可讀取且可寫入時,才能使用此作業。

注意

如果您在for或 計算著色器迴圈中呼叫InterlockedCompareExchange,若要正確編譯,則必須在該迴圈上使用[allow_uav_condition]屬性。

 

下列著色器類型支援此函式:

VS HS DS GS PS CS
x x x x x x

 

另請參閱

RWByteAddressBuffer

著色器模型 5