Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sekumpulan besar fungsi menggunakan sebagai salah satu parameter alamat variabel yang harus diakses dengan menggunakan instruksi prosesor interlocked. Ini adalah instruksi atom baca-melalui cache, dan jika operan digunakan dengan tidak benar, ini dapat menghasilkan bug yang sangat halus.
Gunakan anotasi berikut untuk parameter dari fungsi untuk mengidentifikasinya sebagai operand terkunci.
| Anotasi operan yang saling mengunci | Deskripsi |
|---|---|
| _Interlocked_operand_ | Parameter fungsi yang diberi anotasi adalah operand target dari salah satu fungsi yang saling berinterkoneksi. Operan tersebut harus memiliki properti tambahan tertentu. |
Parameter fungsi yang dianotasi dengan _Interlocked_operand_ diharapkan dibagikan antar proses. Variabel yang digunakan dengan anotasi ini harus:
Dinyatakan volatil.
Bukan variabel lokal. Penggunaan variabel lokal biasanya menunjukkan kesalahpahaman tentang niat fungsi. Bahkan jika variabel lokal entah bagaimana dibagikan, persyaratan pengelolaan memori sistem membuat akses ke variabel dalam proses lain menjadi bermasalah.
Tidak dapat diakses kecuali oleh fungsi interlock. Tanpa penggunaan eksplisit fungsi interlock, operasi mungkin mengakses data yang kedaluwarsa, mungkin hanya terjadi dalam cache satu prosesor, atau mungkin tertunda dalam mencapai seluruh sistem.
Fungsi yang disediakan sistem sudah diannotasi untuk operand yang saling mengunci.
Contoh berikut menunjukkan anotasi untuk fungsi InterlockedExchange . Anotasi ini menentukan bahwa parameter Target harus selalu diakses dengan memakai operasi interlock.
LONG
InterlockedExchange (
_Inout_ _Interlocked_operand_ LONG volatile *Target,
_In_ LONG Value
);