Perpustakaan C ++ - <atomic>
pengantar
Ini adalah tipe yang merangkum nilai yang aksesnya dijamin tidak menyebabkan data race dan dapat digunakan untuk menyinkronkan akses memori di antara utas yang berbeda dan pustaka atomnya menyediakan komponen untuk operasi atom terperinci yang memungkinkan pemrograman bersamaan tanpa kunci. Setiap operasi atom tidak dapat dibagi sehubungan dengan operasi atom lainnya yang melibatkan objek yang sama.
Tipe atom
Sr.No. | Jenis & Definisi Anggota |
---|---|
1 |
atom
Template kelas atom dan spesialisasi untuk tipe bool, integral, dan pointer |
Tipe atom tipe C.
Berikut ini adalah jenis atom dan juga ditentukan di header ini.
atomics untuk tipe integral fundamental .
Ini adalah salah satu typedef dari spesialisasi lengkap terkait dari atom template kelas atau kelas dasar dari spesialisasi tersebut.
atomics untuk integral berbasis lebar (yang didefinisikan di<cinttypes>).
Masing-masing merupakan alias dari salah satu atomika di atas untuk tipe integral fundamental atau spesialisasi penuh dariatomtemplate kelas dengan tipe integral diperpanjang .
Di mana N adalah satu dalam 8, 16, 32, 64, atau lebar jenis lainnya yang didukung oleh pustaka.
tipe yang terkandung | tipe atom | deskripsi |
---|---|---|
bool |
atomic_bool | |
char |
atomic_char | |
signed char |
atomic_schar | |
unsigned char |
atomic_uchar | |
short |
atomic_short | |
unsigned short |
atomic_ushort | |
int |
atomic_int | |
unsigned int |
atomic_uint | |
long |
atomic_long | |
unsigned long |
atomic_ulong | |
long long |
atomic_llong | |
unsigned long long |
atomic_ullong | |
wchar_t |
atomic_wchar_t | |
char16_t |
atomic_char16_t | |
char32_t |
atomic_char32_t | |
intmax_t | atomic_intmax_t | |
uintmax_t | atomic_uintmax_t | |
int_least N_t |
atomic_int_least N_t |
|
uint_least N_t |
atomic_uint_least N_t |
|
int_fast N_t |
atomic_int_fast N_t |
|
uint_fast N_t |
atomic_uint_fast N_t |
|
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | atomic_size_t | |
ptrdiff_t | atomic_ptrdiff_t |
Operasi pada tipe atom
&Sr.No. | Operasi & Definisi |
---|---|
1 |
atomic_is_lock_free
Ini digunakan untuk memeriksa apakah operasi tipe atom bebas kunci |
2 |
atomic_store & atomic_store_explicit
Ini secara otomatis menggantikan nilai objek atom dengan argumen non-atom |
3 |
atomic_load & atomic_load_explicit
Ini secara atomis memperoleh nilai yang disimpan dalam objek atom |
4 |
atomic_exchange & atomic_exchange_explicit
Ini secara atomik menggantikan nilai objek atom dengan argumen non-atom dan mengembalikan nilai lama atom |
5 |
atomic_compare_exchange_weak & atomic_compare_exchange_weak_explicit & atomic_compare_exchange_strong & atomic_compare_exchange_strong_explicit
Ini secara atomik membandingkan nilai objek atom dengan argumen non-atom dan melakukan pertukaran atom jika sama atau beban atom jika tidak. |
6 |
atomic_fetch_add & atomic_fetch_add_explicit
Ia menambahkan nilai non-atom ke objek atom dan mendapatkan nilai atom sebelumnya |
7 |
atomic_fetch_sub & atomic_fetch_sub_explicit
Ini mengurangi nilai non-atom dari objek atom dan mendapatkan nilai atom sebelumnya |
8 |
atomic_fetch_and & atomic_fetch_and_explicit
Ini menggantikan objek atom dengan hasil logika AND dengan argumen non-atomik dan mendapatkan nilai atom sebelumnya |
9 |
atomic_fetch_or & atomic_fetch_or_explicit
Ini menggantikan objek atom dengan hasil logika OR dengan argumen non-atom dan mendapatkan nilai atom sebelumnya |
10 |
atomic_fetch_xor & atomic_fetch_xor_explicit
Ini menggantikan objek atom dengan hasil XOR logis dengan argumen non-atom dan mendapatkan nilai atom sebelumnya |
Jenis bendera dan operasi
Sr.No. | Jenis bendera & Definisi |
---|---|
1 |
atomic_flag
Jenis atom boolean bebas kunci |
2 |
atomic_flag_test_and_set & atomic_flag_test_and_set_explicit
Ini secara atomis menetapkan bendera ke true dan mengembalikan nilai sebelumnya |
3 |
atomic_flag_clear & atomic_flag_clear_explicit
Ini secara atomis menetapkan nilai bendera menjadi salah |