std::mutex - cppreference.com
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. |
<tbody> </tbody>
| Elemento definito nell'header <mutex> |
||
|
|
(dal C++11) | |
La classe mutex è una primitiva di sincronizzazione che può essere utilizzato per proteggere i dati condivisi vengano accedere contemporaneamente più thread.
Original:
The mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex offre esclusivi, non ricorsivi semantica di proprietà:
Original:
mutex offers exclusive, non-recursive ownership semantics:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Un thread chiamante' possiede un
mutexdal momento in cui lo chiama con successo sialockotry_lockfino a quando non chiamaunlock.Original:
A calling thread owns a
mutexfrom the time that it successfully calls eitherlockortry_lockuntil it callsunlock.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.Quando un thread possiede un
mutex, tutti gli altri thread si blocca (per le chiamate versolock) o ricevere un valore restituitofalse(pertry_lock) se tentano di rivendicare la proprietà delmutex.Original:
When a thread owns a
mutex, all other threads will block (for calls tolock) or receive afalsereturn value (fortry_lock) if they attempt to claim ownership of themutex.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.Un thread chiamante non deve possedere un
mutexprima di chiamarelockotry_lock.Original:
A calling thread must not own a
mutexprior to callinglockortry_lock.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Il comportamento di un programma non è definito se un mutex viene distrutto mentre ancora di proprietà di un po 'di filo. La classe mutex non è copiabile.
Original:
The behavior of a program is undefined if a mutex is destroyed while still owned by some thread. The mutex class is non-copyable.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Membri tipi
Membro tipo Original: Member type The text has been machine-translated via Google Translate. |
Definition |
native_handle_type
|
Implementazione definita Original: implementation-defined The text has been machine-translated via Google Translate. |
Membri funzioni
costruisce il mutex Original: constructs the mutex The text has been machine-translated via Google Translate. (metodo pubblico) [modifica] | |
Bloccaggio Original: Locking The text has been machine-translated via Google Translate. | |
blocca i blocchi mutex, se il mutex non è disponibile Original: locks the mutex, blocks if the mutex is not available The text has been machine-translated via Google Translate. (metodo pubblico) [modifica] | |
prova a bloccare il mutex, restituisce se il mutex non è disponibile Original: tries to lock the mutex, returns if the mutex is not available The text has been machine-translated via Google Translate. (metodo pubblico) [modifica] | |
sblocca il mutex Original: unlocks the mutex The text has been machine-translated via Google Translate. (metodo pubblico) [modifica] | |
Maniglia nativo Original: Native handle The text has been machine-translated via Google Translate. | |
restituisce l'implementazione sottostante definito handle di thread Original: returns the underlying implementation-defined thread handle The text has been machine-translated via Google Translate. (metodo pubblico) [modifica] | |
Esempio
Questo esempio mostra come un mutex può essere utilizzata per proteggere un std::map condiviso tra due thread .
Original:
This example shows how a mutex can be used to protect a std::map shared between two threads.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <chrono> #include <thread> #include <mutex> #include <map> #include <string> std::map<std::string, std::string> g_pages; std::mutex g_pages_mutex; void save_page(const std::string &url) { // simulate a long page fetch std::this_thread::sleep_for(std::chrono::seconds(2)); std::string result = "fake content"; g_pages_mutex.lock(); g_pages[url] = result; g_pages_mutex.unlock(); } int main() { std::thread t1(save_page, "http://foo"); std::thread t2(save_page, "http://bar"); t1.join(); t2.join(); g_pages_mutex.lock(); for (const auto &pair : g_pages) { std::cout << pair.first << " => " << pair.second << '\n'; } g_pages_mutex.unlock(); }
Output:
http://bar => fake content http://foo => fake content