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. |
| Defined in header <atomic>
|
||
| extern "C" void atomic_thread_fence( std::memory_order order ); |
(ya que C + +11) | |
Establece la sincronización de la memoria ordenación de accesos atómicas no atómicas y relajado, como lo indicó
order, sin una operación atómica asociada. Por ejemplo, todas las tiendas atómicas no atómicas y relajado que ocurren antes de una cerca std::memory_order_release hilo en A se sincroniza con cargas atómicas no atómicas y relajado de los mismos lugares realizadas en el subproceso B después de un cerco 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.
Contenido |
[editar] Parámetros
| order | - | la memoria ordenamiento ejecutado por la valla
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. |
[editar] Valor de retorno
(Ninguno)
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.
[editar] Excepciones
[editar] Ejemplos
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() } }
[editar] Ver también
| (C++11) |
define las limitaciones de memoria de pedido para la operación dada atómica 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) |
valla entre un hilo y un manejador de señales ejecuta en el mismo subproceso 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. (función) |
| C documentation for atomic_thread_fence
| |