std::atomic_flag
Da cppreference.com.
|
|
Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate.
La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
<metanoindex/>
<tbody> </tbody>| Elemento definito nell'header <atomic>
|
||
class atomic_flag; |
(dal C++11) | |
std::atomic_flag è un tipo atomico boolean. A differenza di tutte le specializzazioni di std::atomic, è garantita senza blocchi. A differenza di
std::atomic<bool>, std::atomic_flag non fornisce le operazioni di carico o negozio.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.
Membri funzioni
costruisce 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. (metodo pubblico) | |
l'operatore di assegnazione 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. (metodo pubblico) | |
imposta atomicamente bandiera 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. (metodo pubblico) | |
imposta atomicamente il flag su true e ottiene il suo valore precedente 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. (metodo pubblico) | |
Esempio
Un mutex spinlock può essere implementato in spazio utente utilizzando 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>...
Vedi anche
imposta atomicamente il flag su true e restituisce il suo valore precedente 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. (funzione) | |
(C++11) (C++11) |
imposta atomicamente il valore della bandiera 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. (funzione) |
(C++11) |
initializes an std::atomic_flag to false (macro costante) |
C documentation for atomic_flag
| |