Pemesanan Memori dengan Operasi Baca-Ubah-Tulis-Tulis Atom
Dalam C , operasi baca-ubah-tulis (RMW) atom seperti x .exchange() menguatkuasakan jaminan pesanan khusus berkenaan dengan muatan dan stor lain. Timbul persoalan sama ada operasi ini dipertimbangkan:
Perspektif Standard
Mengikut standard C, RMW operasi dianggap sebagai operasi tunggal. Ini tersirat oleh nama tunggal mereka dan perkataan yang berkaitan.
Pelaksanaan ARM64
Dalam ARM64, operasi RMW dilaksanakan sebagai urutan beban, pertukaran atom dan arahan stor . Walaupun secara teori pelaksanaan ini membenarkan arahan stor menjadi kelihatan sebelum pertukaran atom, ini tidak menjejaskan jaminan pesanan memori standard.
Penyegerakan Memori
Penyegerakan memori dalam C adalah berdasarkan terutamanya pada hubungan penyegerakan-dengan antara operasi pelepasan dan perolehan. Dalam contoh kod yang disediakan:
Analisis Penyegerakan
Oleh kerana tiada operasi lain untuk disegerakkan, urutan berikut berlaku:
Kemungkinan Output
Oleh itu, kod sememangnya boleh mengeluarkan 0, 1. perspektif standard membayangkan bahawa operasi RMW adalah operasi tunggal tanpa jaminan tambahan, membenarkan ini keluaran.
Atas ialah kandungan terperinci Adakah Operasi Tunggal Baca-Ubah Suai-Tulis C Atomic dengan Semantik Pemerolehan-Pelepasan, atau Urutan Pemuatan dan Simpanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!