Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Titik Terapung Atom dan Operasi Vektor Dikendalikan pada Seni Bina x86_64?
Kendalian Titik Terapung Atom pada x86_64
Walaupun C tidak menyokong operasi berganda atom secara asli, ia menyediakan atomic
Untuk operasi vektor atom pada x86_64, tiada sokongan perkakasan langsung. Walau bagaimanapun, beban dan simpanan 128-bit dan 256-bit yang diselaraskan secara amnya dijamin sebagai atom. Untuk operasi vektor tidak sejajar, jaminan atomicity kurang jelas.
Sokongan Peringkat Perhimpunan untuk Operasi Berganda dan Vektor
x86_64 menyediakan sokongan peringkat pemasangan untuk operasi atom pada beregu dan vektor:
Pelaksanaan MSVC 2017 atomic
MSVC 2017 melaksanakan atom bebas kunci
CAS: movq QWORD PTR [dst_addr], rax // 64-bit CAS
Operasi tambah menggunakan:
CAS: lock cmpxchg16b QWORD PTR [dst_addr], rax // 128-bit CAS
Operasi RMW (Baca-Ubahsuai-Tulis) Atom
Operasi baca-ubah-tulis (RMW) atom, seperti fetch_add, memerlukan gelung CAS pelaksanaan. Pada x86_64, arahan CAS menyokong operasi 16-bait (cmpxchg16b).
CAS: lock cmpxchg16b QWORD PTR [dst_addr], rax
Walaupun gelung CAS menyediakan kefungsian RMW atom, ia lebih mahal daripada beban dan simpanan atom.
Tambahan Nota
Atas ialah kandungan terperinci Bagaimanakah Titik Terapung Atom dan Operasi Vektor Dikendalikan pada Seni Bina x86_64?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!