Apakah Objek Atom dalam std::atomic<>?

Linda Hamilton
Lepaskan: 2024-11-10 16:33:02
asal
513 orang telah melayarinya

What is an Atomic Object in  std::atomic<>? 
? " />

Apakah itu Atomic Object dalam std::atomic<>?

Templat std::atomic<> menyediakan jenis yang boleh serentak dikendalikan oleh berbilang benang tanpa menimbulkan gelagat yang tidak ditentukan.

Atomicity of std::atomic<>

Setiap instantiasi std::atomic<> jenis yang membenarkan operasi serentak oleh urutan berbeza pada kejadiannya Tidak seperti objek C biasa, objek atom memastikan akses eksklusif kepada data mereka, menghalang perlumbaan data.

Operasi Atom

Operasi yang dilakukan pada objek atom adalah bersifat atom Ini bermakna:

  • Perubahan kepada keadaan objek atom dijamin dapat dilihat oleh semua benang.
  • Akses kepada objek atom mungkin. wujudkan penyegerakan antara benang dan susunan akses memori bukan atom.

Tempahan Memori dan std::atomic<>

std::atomic<> ; menyediakan kawalan tepat ke atas penyegerakan dan susunan memori Ia menyokong pelbagai pilihan susunan memori, termasuk:

  • std::memory_order_relaxed: Tiada jaminan penyegerakan atau pesanan.
  • std::memory_order_release: Memastikan tulisan dapat dilihat oleh utas lain yang memperoleh pembolehubah atom yang sama.
  • std::memory_order_acquire: Memastikan bahawa beban dapat dilihat selepas operasi pelepasan pada pembolehubah atom yang sama dalam utas lain.
  • std ::memory_order_seq_cst: Menyediakan ketekalan berjujukan (jumlah susunan global) antara semua operasi atom.

Contoh: Operasi Aritmetik

Sementara operator aritmetik individu seperti = dan adalah operasi atom, menguraikannya kepada operasi beban, tambah dan simpan yang berasingan mungkin bukan operasi atom. Contohnya:

a = a + 12;
Salin selepas log masuk

Operasi ini akan melibatkan langkah berikut:

  1. Muatkan nilai a.
  2. Tambahkan 12 padanya.
  3. Simpan keputusan kembali ke a.

Langkah 2 dan 3 bukan atom, jadi terdapat kemungkinan keadaan perlumbaan di mana benang lain boleh mengubah suai antara tambah dan kedai.

Alternatif kepada Operasi Asas Aritmetik

Untuk kes penggunaan biasa yang melibatkan operasi aritmetik, adalah disyorkan untuk menggunakan operator terlampau beban setara yang ditakrifkan dalam std::atomic<>. Operator ini melaksanakan keseluruhan operasi secara atom, memastikan ketekalan berurutan.

Sumber Tambahan pada Model Atom dan Memori

  • Atom C dan susunan memori
  • Perbandingan: Pengaturcaraan tanpa kunci dengan atom dalam C 11 lwn. mutex dan RW-locks
  • C 11 memperkenalkan model memori piawai. Apakah maksudnya? Dan bagaimanakah ia akan menjejaskan pengaturcaraan C?
  • Konkurensi dalam C 11

Atas ialah kandungan terperinci Apakah Objek Atom dalam std::atomic<>?. 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