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

Fungsi Intrinsik

Model Shader 5