std::atomic_thread_fence
Aus 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. |
definiert in Header <atomic> | ||
extern"C"void atomic_thread_fence(std::memory_order order ); | (seit C++11) | |
Stellt Speicher Synchronisierung Bestellung von nicht-atomare und entspannt atomare Zugriffe, wie
order
angewiesen, ohne einen zugehörigen atomaren Operation. Zum Beispiel werden alle nicht-atomare und entspannt atomaren Läden, die vor einem std::memory_order_release Zaun in thread geschehen A wird mit nicht-atomare und entspannt atomaren Lasten aus den gleichen Stellen in thread B nach einer std::memory_order_acquire Zaun gemacht synchronisiert werden .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.
Inhaltsverzeichnis |
[Bearbeiten]Parameter
order | - | der Speicher Bestellung per diesem Zaun ausgeführt 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. |
[Bearbeiten]Rückgabewert
(None)
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.
[Bearbeiten]Ausnahmen
[Bearbeiten]Beispiele
Scan an array of mailboxes, and process only the ones intended for us, without unnecessary synchronization.
constint num_mailboxes =32;std::atomic<int> mailbox[num_mailboxes]; // The writer threads update non-atomic shared data and then update mailbox[i] as followsstd::atomic_store_explicit(&mailbox[i], std::memory_order_release); // Reader thread needs to check all mailbox[i], but only needs to sync with onefor(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()}}
[Bearbeiten]Siehe auch
(C++11) | definiert Speicher Bestellung Einschränkungen für den angegebenen atomaren Operation 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) | Barriere zwischen einem Thread und einem Signalhandler, der im selben Thread ausgeführt wird 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. (Funktion) |
C documentation for atomic_thread_fence |