Manakah Jenis pada Komputer 64-Bit adalah Atom Semulajadi dalam GNU C dan GNU C ?
Tidak seperti dalam C11 dan kemudian, atau C 11 dan kemudian, yang menyediakan jaminan untuk atomicity menggunakan jenis _Atomic atau std::atomic, piawaian bahasa C dan C sendiri tidak memberi jaminan mengenai atom membaca dan menulis. Sebaliknya, tahap atomicity bergantung pada pelaksanaan pengkompil dan seni bina sasaran.
Pada komputer 64-bit yang menjalankan Linux pada pemproses x86-64, atomicity semula jadi jenis data berbeza berbeza-beza. Penyusun GNU C dan GNU C (gcc dan g ) menawarkan tahap atomicity tertentu untuk jenis tertentu.
Jenis Atom:
-
int: Typedef _Atomic_word dalam pengepala menunjukkan bahawa int ialah atom.
-
__sig_atomic_t: Typedef dalam pengepala mentakrifkan jenis integer atom, memastikan atom membaca dan menulis dengan kehadiran gangguan tak segerak.
Jenis Bukan Atom:
- int64_t (long panjang)
- uint64_t (unsigned long long)
- double (64-bit)
- berganda panjang (juga 64-bit)
Nota Tambahan:
- Atomicity merujuk kepada bacaan dan tulis atom, bukan kenaikan atom, penyusutan atau kompaun tugasan.
- Adalah penting untuk ambil perhatian bahawa walaupun jenis tertentu dijamin sebagai atom dalam konteks tertentu (cth., sig_atomic_t yang tidak menentu ialah atom berkenaan dengan isyarat), ia tidak semestinya atom berkenaan dengan benang.
- Pengkompil mungkin mengoptimumkan kod dengan cara yang memecahkan andaian tentang atomicity, terutamanya jika andaian tersebut adalah tidak dinyatakan secara eksplisit dalam standard bahasa.
- Untuk memastikan akses serentak selamat benang, penggunaan eksplisit jenis _Atomic atau std::atomic disyorkan.
Atas ialah kandungan terperinci Jenis Data Manakah yang Secara Semulajadi Atom pada Sistem GNU C/C 64-Bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!