Rumah > pembangunan bahagian belakang > C++ > Adakah C Integer Membaca dan Menulis Atom dalam Persekitaran Berbilang Thread?

Adakah C Integer Membaca dan Menulis Atom dalam Persekitaran Berbilang Thread?

Barbara Streisand
Lepaskan: 2024-12-02 12:02:11
asal
750 orang telah melayarinya

Are C   Integer Reads and Writes Atomic in Multithreaded Environments?

Adakah C Membaca dan Menulis Atom Int? [pendua]

Soalan:

Dalam aplikasi berbilang benang dengan satu utas mengemas kini dan satu lagi membaca integer, adakah perlu untuk menyegerakkan akses kepada ini nilai berbilang bait? Bolehkah penulisan separa diganggu sebelum selesai, membenarkan bacaan menangkap nilai yang tidak lengkap?

Jawapan:

Keatomitian bacaan dan tulis bagi integer dalam C bergantung pada seni bina sistem.

Butiran:

  • Pada sistem IA32: Alamat yang dijajar dengan betul akan mempunyai bacaan dan tulis atom. Tulisan tidak sejajar mungkin atom bergantung pada cache.
  • Caching: Jika memori terletak dalam satu baris cache L1, tulisan adalah atom. Jika tidak, ia mungkin tidak.
  • Lebar bas: Lebar bas data mempengaruhi atomicity. Pada sesetengah sistem yang lebih lama, penulisan 16-bit ke alamat tidak sejajar bukan atom, manakala pada sistem dengan bas yang lebih luas, ianya.
  • Pengoptimuman pengkompil: Dalam C/C , adalah penting untuk menandakan nilai yang dikongsi sebagai tidak menentu untuk menghalang pengoptimum daripada menganggap ia tidak pernah dikemas kini dalam satu benang.

Kesimpulan:

Sama ada penyegerakan diperlukan bergantung pada faktor seperti seni bina pemproses, susun atur memori dan pengoptimuman pengkompil. Secara umum, adalah disyorkan untuk menyegerakkan akses kepada nilai berbilang bait yang dikongsi, terutamanya dalam bahagian kritikal yang susunan bacaan dan tulis adalah berkaitan.

Atas ialah kandungan terperinci Adakah C Integer Membaca dan Menulis Atom dalam Persekitaran Berbilang Thread?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan