Thư viện C ++ - <atomic>
Giới thiệu
Đây là các kiểu đóng gói một giá trị mà quyền truy cập được đảm bảo không gây ra sự chạy đua dữ liệu và có thể được sử dụng để đồng bộ hóa các truy cập bộ nhớ giữa các luồng khác nhau và thư viện nguyên tử cung cấp các thành phần cho các hoạt động nguyên tử chi tiết cho phép lập trình đồng thời không khóa. Mỗi hoạt động nguyên tử là không thể phân chia đối với bất kỳ hoạt động nguyên tử nào khác liên quan đến cùng một đối tượng.
Loại nguyên tử
| Sr.No. | Loại thành viên & Định nghĩa | 
|---|---|
| 1 |  nguyên tử  Mẫu lớp nguyên tử và các chuyên môn cho các loại bool, tích phân và con trỏ  |  
      
Các loại nguyên tử kiểu C
Sau đây là các loại nguyên tử và cũng được định nghĩa trong tiêu đề này.
nguyên tử cho các loại tích phân cơ bản .
Đây là các typedef của chuyên môn đầy đủ tương ứng của nguyên tử mẫu lớp hoặc một lớp cơ sở của chuyên ngành đó.
nguyên tử cho tích phân dựa trên chiều rộng (những nguyên tử được định nghĩa trong<cinttypes>).
Mỗi trong số này hoặc là bí danh của một trong các nguyên tử ở trên cho các loại tích phân cơ bản hoặc của một chuyên ngành đầy đủ củanguyên tửmẫu lớp với kiểu tích phân mở rộng .
Trong đó N là một trong 8, 16, 32, 64 hoặc bất kỳ chiều rộng kiểu nào khác được thư viện hỗ trợ.
| loại chứa | loại nguyên tử | sự miêu tả | 
|---|---|---|
bool |  
       nguyên tử_bool | |
char |  
       nguyên tử_char | |
signed char |  
       nguyên tử_sạc | |
unsigned char |  
       nguyên tử_uchar | |
short |  
       nguyên tử_short | |
unsigned short |  
       atom_ushort | |
int |  
       nguyên tử | |
unsigned int |  
       nguyên tử | |
long |  
       atom_long | |
unsigned long |  
       atom_ulong | |
long long |  
       atom_llong | |
unsigned long long |  
       atom_ullong | |
wchar_t |  
       nguyên tử_wchar_t | |
char16_t |  
       nguyên tử_char16_t | |
char32_t |  
       nguyên tử_char32_t | |
| intmax_t | nguyên tử_intmax_t | |
| uintmax_t | nguyên tử_uintmax_t | |
int_leastN_t |  
       atomic_int_leastN_t |  
      |
uint_leastN_t |  
       atomic_uint_leastN_t |  
      |
int_fastN_t |  
       atomic_int_fastN_t |  
      |
uint_fastN_t |  
       atomic_uint_fastN_t |  
      |
| intptr_t | nguyên tử_intptr_t | |
| uintptr_t | nguyên tử_uintptr_t | |
| size_t | nguyên tử_size_t | |
| ptrdiff_t | atom_ptrdiff_t | 
Hoạt động trên các loại nguyên tử
&| Sr.No. | Hoạt động & Định nghĩa | 
|---|---|
| 1 |  atom_is_lock_free  Nó được sử dụng để kiểm tra xem hoạt động của loại nguyên tử có bị khóa không  |  
      
| 2 |  atom_store & atom_store_explicit  Nó tự động thay thế giá trị của đối tượng nguyên tử bằng đối số phi nguyên tử  |  
      
| 3 |  atom_load & atom_load_explicit  Nó lấy nguyên tử giá trị được lưu trữ trong một đối tượng nguyên tử  |  
      
| 4 |  atom_exchange & atom_exchange_explicit  Nó thay thế nguyên tử giá trị của đối tượng nguyên tử bằng đối số phi nguyên tử và trả về giá trị cũ của nguyên tử  |  
      
| 5 |  atom_compare_exchange_weak & atom_compare_exchange_weak_explicit & atom_compare_exchange_strong & atom_compare_exchange_strong_explicit  Nó so sánh về mặt nguyên tử giá trị của đối tượng nguyên tử với đối số phi nguyên tử và thực hiện trao đổi nguyên tử nếu bằng hoặc tải nguyên tử nếu không  |  
      
| 6 |  nguyên tử_fetch_add & nguyên tử_fetch_add_explicit  Nó thêm một giá trị không phải nguyên tử vào một đối tượng nguyên tử và nhận được giá trị trước đó của nguyên tử  |  
      
| 7 |  nguyên tử_fetch_sub & nguyên tử_fetch_sub_explicit  Nó trừ đi một giá trị không phải nguyên tử từ một đối tượng nguyên tử và nhận được giá trị trước đó của nguyên tử  |  
      
| số 8 |  nguyên tử_fetch_and & nguyên tử_fetch_and_explicit  Nó thay thế đối tượng nguyên tử bằng kết quả của logic AND bằng đối số phi nguyên tử và nhận được giá trị trước đó của nguyên tử  |  
      
| 9 |  atom_fetch_or & atom_fetch_or_explicit  Nó thay thế đối tượng nguyên tử bằng kết quả của OR logic bằng một đối số không phải nguyên tử và nhận được giá trị trước đó của nguyên tử  |  
      
| 10 |  nguyên tử_fetch_xor & nguyên tử_fetch_xor_explicit  Nó thay thế đối tượng nguyên tử bằng kết quả của XOR logic với đối số phi nguyên tử và nhận được giá trị trước đó của nguyên tử  |  
      
Loại cờ và hoạt động
| Sr.No. | Loại cờ & Định nghĩa | 
|---|---|
| 1 |  atom_flag  Loại nguyên tử boolean không có khóa  |  
      
| 2 |  atom_flag_test_and_set & atom_flag_test_and_set_explicit  Về mặt nguyên tử, nó đặt cờ thành true và trả về giá trị trước đó của nó  |  
      
| 3 |  atom_flag_clear & atom_flag_clear_explicit  Về cơ bản, nó đặt giá trị của cờ thành false  |