Fungsi InterlockedCompareExchange (referensi HLSL)
Membandingkan tujuan secara atomik dengan nilai perbandingan. Jika identik, tujuan ditimpa dengan nilai input. Nilai asli diatur ke nilai asli tujuan.
Sintaks
void InterlockedCompareExchange(
in R dest,
in T compare_value,
in T value,
out T original_value
);
Parameter
-
dest [in]
-
Jenis: R
Alamat tujuan.
-
compare_value [in]
-
Jenis: T
Nilai perbandingan.
-
value [in]
-
Jenis: T
Nilai input.
-
original_value [out]
-
Jenis: T
Nilai aslinya.
Nilai kembali
Fungsi ini tidak mengembalikan nilai.
Keterangan
Secara atomik membandingkan nilai yang dirujuk oleh dest dengan compare_value, menyimpan nilai di lokasi yang dirujuk oleh dest jika nilai cocok, mengembalikan nilai asli dest dalam original_value. Operasi ini hanya dapat dilakukan pada sumber daya yang diketik int atau uint dan variabel memori bersama. Ada dua kemungkinan penggunaan untuk fungsi ini. Yang pertama adalah ketika R adalah jenis variabel memori bersama. Dalam hal ini, fungsi melakukan operasi pada register memori bersama yang dirujuk oleh dest. Skenario kedua adalah ketika R adalah jenis variabel sumber daya. Dalam skenario ini, fungsi melakukan operasi pada lokasi sumber daya yang direferensikan oleh tujuan. Operasi ini hanya tersedia ketika R dapat dibaca dan dapat ditulis.
Operasi yang saling diblokir tidak menyiratkan pagar/pembatas memori apa pun.
Catatan
Jika Anda memanggil InterlockedCompareExchange dalam perulangan shader komputasi untuk atau sementara , untuk mengkompilasi dengan benar, Anda harus menggunakan atribut [allow_uav_condition] pada perulangan tersebut.
Minimum Shader Model
Fungsi ini didukung dalam model shader berikut.
Shader Model | Didukung |
---|---|
Model Shader 5 dan model shader yang lebih tinggi | ya |
Fungsi ini didukung dalam jenis shader berikut:
Puncak | Hull | Domain | Geometri | Pixel | Compute |
---|---|---|---|---|---|
x | x | x | x | x | x |
Lihat juga