std::atomic_flag
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>
|
||
| class atomic_flag; |
(ya que C + +11) | |
std::atomic_flag es un tipo booleano atómico. A diferencia de todas las especialidades de std::atomic, se garantiza que sea sin bloqueo. A diferencia de std::atomic<bool>,
std::atomic_flag no proporciona carga o de operaciones de la tienda .Original:
std::atomic_flag is an atomic boolean type. Unlike all specializations of std::atomic, it is guaranteed to be lock-free. Unlike std::atomic<bool>,
std::atomic_flag does not provide load or store operations.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] Las funciones miembro
| construye un atomic_flag Original: constructs an atomic_flag The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
| el operador de asignación Original: the assignment operator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
| atómicamente establece el marcador a false Original: atomically sets flag to false The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
| atómicamente establece el indicador true y obtiene su valor anterior Original: atomically sets the flag to true and obtains its previous value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
[editar] Ejemplo
Un mutex spinlock puede ser implementado en el espacio de usuario utilizando un atomic_flag
Original:
A spinlock mutex can be implemented in userspace using an atomic_flag
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.
#include <thread> #include <vector> #include <iostream> #include <atomic> std::atomic_flag lock = ATOMIC_FLAG_INIT; void f(int n) { for(int cnt = 0; cnt < 100; ++cnt) { while(lock.test_and_set(std::memory_order_acquire)) // acquire lock ; // spin std::cout << "Output from thread " << n << '\n'; lock.clear(std::memory_order_release); // release lock } } int main() { std::vector<std::thread> v; for (int n = 0; n < 10; ++n) { v.emplace_back(f, n); } for (auto& t : v) { t.join(); } }
Output:
Output from thread 2 Output from thread 6 Output from thread 7 ...<exactly 1000 lines>...
[editar] Ver también
| atómicamente establece el indicador a true y devuelve su valor anterior Original: atomically sets the flag to true and returns its previous value 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++11) (C++11) |
atómicamente establece el valor de la bandera de false Original: atomically sets the value of the flag to false 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++11) |
initializes an std::atomic_flag to false (macro constante) |
| C documentation for atomic_flag
| |