std::mutex
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. |
Elemento definito nell'header <mutex> | ||
class 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.
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.
You can help to correct and verify the translation. Click here for instructions.
- Un thread chiamante' possiede un
mutex
dal momento in cui lo chiama con successo sialock
otry_lock
fino a quando non chiamaunlock
.Original:A calling thread owns amutex
from the time that it successfully calls eitherlock
ortry_lock
until 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 restituito false (pertry_lock
) se tentano di rivendicare la proprietà delmutex
.Original:When a thread owns amutex
, all other threads will block (for calls tolock
) or receive a false return 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
mutex
prima di chiamarelock
otry_lock
.Original: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.
You can help to correct and verify the translation. Click here for instructions.
[modifica]Membri tipi
Membro tipo Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | Definition |
native_handle_type | Implementazione definita Original: implementation-defined The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[modifica]Membri funzioni
costruisce il mutex Original: constructs the mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
Original: Locking The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
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. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
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. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
sblocca il mutex Original: unlocks the mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (metodo pubblico) | |
Original: Native handle The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
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. You can help to correct and verify the translation. Click here for instructions. (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.
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(conststd::string&url){// simulate a long page fetchstd::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(constauto&pair : g_pages){std::cout<< pair.first<<" => "<< pair.second<<'\n';} g_pages_mutex.unlock();}
Output:
http://bar => fake content http://foo => fake content