Soalan ini menyelidiki tentang mencipta pembilang atom 64-bit daripada integer atom 32-bit. Kaunter mempunyai satu penulis dan berbilang pembaca, dengan penulis adalah pengendali isyarat yang tidak boleh disekat.
Penyelesaian yang dicadangkan menggunakan kiraan penjanaan, menggunakan bit rendah sebagai kunci baca. Pembaca mencuba semula sehingga kiraan penjanaan stabil merentasi bacaan, dan bit rendah tidak ditetapkan.
Kod yang disediakan secara amnya mengikut prinsip reka bentuk yang betul bagi SeqLock, yang dikenali corak untuk melaksanakan pembilang atom bebas kunci dengan nombor turutan. Penggunaan susunan memori adalah baik, memastikan bahawa kaunter dikemas kini secara atom.
Walau bagaimanapun, perlu diingat bahawa menggunakan operasi RMW atom untuk penambahan muatan adalah tidak diperlukan jika sistem menyokong penambahan atau beban atom 64-bit yang lebih murah. Sebaliknya, beban mudah bagi kedua-dua bahagian, diikuti dengan kenaikan bukan atom, dan penyimpanan atom hasilnya adalah mencukupi.
Selain itu, pembilang jujukan juga boleh mengelakkan operasi RMW atom melainkan ia digunakan sebagai kunci spin dengan berbilang penulis. Dengan seorang penulis, ia boleh menggunakan beban tulen dan stor tulen dengan pesanan keluaran, yang lebih cekap daripada RMW atom atau kedai dengan pesanan seq_cst.
Untuk memintas batasan atom
Alternatif lain ialah melaksanakan templat SeqLock yang menyemak secara dinamik sama ada sasaran menyokong operasi atom tanpa kunci pada atom
Kesimpulannya, sementara kod yang disediakan membentangkan pelaksanaan fungsi pembilang atom 64-bit menggunakan atom 32-bit, terdapat ialah pengoptimuman dan alternatif yang berpotensi yang boleh meningkatkan prestasi dan memudahkan kod.
Atas ialah kandungan terperinci Bagaimanakah Pembilang Atom 64-Bit Boleh Dilaksanakan Hanya Menggunakan Atom 32-Bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!