共用方式為


InterlockedCompareExchange 函式 (HLSL 參考)

以不可部分完成的方式比較目的地與比較值。 如果兩者相同,則會以輸入值覆寫目的地。 原始值會設定為目的地的原始值。

語法

void InterlockedCompareExchange(
  in  R dest,
  in  T compare_value,
  in  T value,
  out T original_value
);

參數

dest [in]

類型: R

目的地位址。

compare_value [in]

類型: T

比較值。

value [in]

類型: T

輸入值。

original_value [out]

類型: T

原始的值。

傳回值

此函式不會傳回值。

備註

以不可部分完成的方式比較dest所參考的值與compare_value,如果值相符,則會將儲存在dest所參考的位置,並在original_value中傳回dest的原始值。 此作業只能在 intuint 型別資源和共用記憶體變數上執行。 此函式有兩個可能的用法。 第一個是當 R 是共用記憶體變數類型時。 在此情況下,函式會在 dest所參考的共用記憶體暫存器上執行作業。 第二個案例是當 R 是資源變數類型時。 在此案例中,函式會在 dest所參考的資源位置上執行作業。 只有在 R 可讀取且可寫入時,才能使用此作業。

內嵌作業不表示任何記憶體柵欄/屏障。

注意

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

 

最小著色器模型

下列著色器模型中支援此函式。

著色器模型 支援
著色器模型 5 和更高的著色器模型

 

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

頂點 船體 網域 幾何形狀 像素 計算
x x x x x x

 

另請參閱

內建函式

著色器模型 5