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. |
| Defined in 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
mutexdal momento in cui lo chiama con successo sialockotry_lockfino a quando non chiamaunlock.Original:A calling thread owns amutexfrom 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 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
mutexprima di chiamarelockotry_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(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