std::atomic_thread_fence
来自cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <atomic>
|
||
| extern "C" void atomic_thread_fence( std::memory_order order ); |
(C++11 起) | |
建立订货的非原子和轻松的指示,
order的原子访问,内存同步,而没有相关的原子操作。例如,所有的非原子和宽松的原子店发生之前,std::memory_order_release围栏线程A将被同步的非原子和轻松的原子负载从std::memory_order_acquire围栏后,线程B在相同的位置.Original:
Establishes memory synchronization ordering of non-atomic and relaxed atomic accesses, as instructed by
order, without an associated atomic operation. For example, all non-atomic and relaxed atomic stores that happen before a std::memory_order_release fence in thread A will be synchronized with non-atomic and relaxed atomic loads from the same locations made in thread B after an std::memory_order_acquire fence.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目录 |
[编辑] 参数
| order | - | 这个围栏的记忆顺序执行
Original: the memory ordering executed by this fence The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[编辑] 返回值
(无)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 例外
[编辑] 的例子
Scan an array of mailboxes, and process only the ones intended for us, without unnecessary synchronization.
const int num_mailboxes = 32; std::atomic<int> mailbox[num_mailboxes]; // The writer threads update non-atomic shared data and then update mailbox[i] as follows std::atomic_store_explicit(&mailbox[i], std::memory_order_release); // Reader thread needs to check all mailbox[i], but only needs to sync with one for (int i = 0; i < num_mailboxes; ++i) { if (std::atomic_load_explicit(&mailbox[i], std::memory_order_relaxed) == my_id) { std::atomic_thread_fence(std::memory_order_acquire); // synchronize with just one writer do_work(i); // guaranteed to observe everything done in the writer thread before // the atomic_store_explicit() } }
[编辑] 另请参阅
| (C++11) |
定义内存排序约束给定的原子操作 Original: defines memory ordering constraints for the given atomic operation The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (的typedef) |
| (C++11) |
围栏之间的线程和信号处理器,在同一个线程中执行 Original: fence between a thread and a signal handler executed in the same thread The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数) |
| C documentation for atomic_thread_fence
| |