Fungsi InterlockedCompareExchange

Membandingkan input dengan nilai perbandingan dan menukar hasilnya, secara atomik.

Sintaks

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

Parameter

dest [in]

Jenis: UINT

Alamat tujuan.

compare_value [in]

Jenis: UINT

Nilai perbandingan.

value [in]

Jenis: UINT

Nilai input.

original_value [out]

Jenis: UINT

Nilai aslinya.

Menampilkan nilai

Fungsi ini tidak mengembalikan nilai.

Keterangan

Secara atomik membandingkan nilai dalam tujuan dengan compare_value, menyimpan nilai dalam tujuan 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 tiga 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. Terakhir, skenario ketiga adalah ketika R adalah jenis variabel lokal. Dalam skenario ini, fungsi berkurang ke operasi yang dilakukan menggunakan operasi lokal. Operasi ini hanya tersedia ketika R dapat dibaca dan dapat ditulis.

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.

 

Fungsi ini didukung dalam jenis shader berikut:

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

 

Lihat juga

RWByteAddressBuffer

Model Shader 5