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_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 | 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 |