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.
Operasi akan mengakuisisi semantik jika prosesor lain akan selalu melihat efeknya sebelum efek operasi berikutnya. Operasi memiliki semantik rilis jika prosesor lain akan melihat setiap efek operasi sebelumnya sebelum efek operasi itu sendiri.
Perhatikan contoh kode berikut:
a++;
b++;
c++;
Dari sudut pandang prosesor lain, operasi sebelumnya dapat tampak terjadi dalam urutan apa pun. Misalnya, prosesor lain mungkin melihat kenaikan b sebelum kenaikan a.
Operasi atomik, seperti yang dilakukan rutinitas InterlockedXxx, memiliki semantik akuisisi dan rilis secara default. Namun, prosesor berbasis Itanium menjalankan operasi yang hanya memperoleh atau hanya melepaskan semantik lebih cepat daripada yang memiliki keduanya. Oleh karena itu, sistem ini menyediakan versi InterlockedXxxAcquire dan InterlockedXxxRelease dari beberapa rutinitas Xxx Yang Saling Terkunci.
Misalnya, rutinitas InterlockedIncrementAcquire menggunakan semantik akuisi untuk menambah variabel. Jika Anda menulis ulang contoh kode sebelumnya sebagai berikut:
InterlockedIncrementAcquire(&a);
b++;
c++;
prosesor lain akan selalu melihat kenaikan a sebelum kenaikan b dan c.
Demikian juga, rutinitas InterlockedIncrementRelease menggunakan semantik rilis untuk menaikkan variabel. Jika Anda menulis ulang contoh kode sekali lagi, sebagai berikut:
a++;
b++;
InterlockedIncrementRelease(&c);
prosesor lainnya akan selalu melihat kenaikan a dan b sebelum kenaikan c.
Jika prosesor tidak memberikan instruksi yang hanya memperoleh atau hanya merilis semantik, sistem akan menggunakan rutinitas yang sesuai yang menyediakan kedua jenis semantik. Misalnya, pada prosesor x86 baik InterlockedIncrementAcquire dan InterlockedIncrementRelease setara dengan InterlockedIncrement.
Tabel berikut mencantumkan rutinitas yang memiliki varian yang hanya perolehan dan hanya rilis.
| RutinXxx yang Terhubung | Dapatkan-Semantics-Only Version | Rilis- VersiSemantics-Only |
|---|---|---|