std::atomic_thread_fence
De 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. |
<metanoindex/>
<tbody> </tbody>| Déclaré dans l'en-tête <atomic>
|
||
extern "C" void atomic_thread_fence( std::memory_order order ); |
(depuis C++11) | |
Établit la synchronisation de mémoire de commande de la non-atomiques et détendue accès atomiques, tel que demandé par
order, sans une opération associée atomique. Par exemple, tous les magasins non-atomiques et détendue atomiques qui se passe avant une clôture en fil de std::memory_order_release A sera synchronisé avec les non-atomiques et détendue charges atomiques à partir des lieux mêmes faits dans le thread B après une clôture std::memory_order_acquire .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.
Paramètres
| order | - | la mémoire ordonnancement exécuté par cette clôture
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. |
Retourne la valeur
(Aucun)
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.
Exceptions
Exemples
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()
}
}
Voir aussi
(C++11) |
définit des contraintes de mémoire de commande pour l'opération donnée atomique 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) |
clôture entre un fil et un gestionnaire de signal exécutée dans le même thread 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. (fonction) |
C documentation for atomic_thread_fence
| |