Bagikan melalui


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