Rumah >pembangunan bahagian belakang >C++ >Adakah Piawaian C/C Menjamin Operasi Atom untuk Sebarang Jenis Data pada Seni Bina ARM dan x86-64?
ARM dan x86-64: Tiada Jenis Atom Terjamin
Bertentangan dengan andaian awal, piawaian bahasa C/C tidak memberikan jaminan operasi atom untuk mana-mana jenis data tertentu, walaupun pada 64-bit komputer.
Akses Atom melalui Isyarat lwn. Benang
Adalah penting untuk membezakan antara dua pengertian atom:
Pelaksanaan GCC pada ARM dan x86-64
Sementara CPU moden seperti ARMv8 dan x86-64 boleh menjamin akses atom untuk operasi tertentu, jaminan ini tidak ditunjukkan pada peringkat bahasa. GCC dan pengkompil lain boleh mengoptimumkan kod dengan cara yang melanggar atomisitas peringkat perkakasan ini, seperti yang ditunjukkan oleh contoh berikut:
Walaupun x ialah pembolehubah 32-bit, GCC menyusun foo sebagai dua berasingan 16 -beban bit, yang boleh mengakibatkan bacaan bukan atom jika x diubah suai serentak.
Pergantungan pada std::atomic atau _Atomic
Satu-satunya cara untuk memastikan operasi atom dalam C dan C adalah dengan menggunakan std::atomic (C) secara eksplisit ) atau jenis _Atomic (C), yang menyediakan mekanisme penyegerakan yang diperlukan untuk menjamin selamat benang akses.
Atas ialah kandungan terperinci Adakah Piawaian C/C Menjamin Operasi Atom untuk Sebarang Jenis Data pada Seni Bina ARM dan x86-64?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!