std::recursive_mutex::lock
Da cppreference.com.
< cpp | thread | recursive mutex
![]() |
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. |
void lock(); |
(dal C++11) | |
Blocca il mutex. Se un altro thread ha già bloccato il mutex, una chiamata a
lock
bloccherà l'esecuzione fino a quando il blocco è stato acquisito.Original:
Locks the mutex. If another thread has already locked the mutex, a call to
lock
will block execution until the lock is acquired.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.
A thread may call lock
on a recursive mutex repeatedly. Ownership will only be released after the thread makes a matching number of calls to unlock
.
The maximum number of levels of ownership is unspecified. An exception of type std::system_error will be thrown if this number is exceeded.
Indice |
[modifica] Parametri
(Nessuno)
Original:
(none)
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] Valore di ritorno
(Nessuno)
Original:
(none)
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] Eccezioni
Genera std::system_error quando si verificano errori, compresi gli errori del sistema operativo sottostante che impedirebbero
lock
dal soddisfare le sue specifiche.Original:
Throws std::system_error when errors occur, including errors from the underlying operating system that would prevent
lock
from meeting its specifications.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] Esempio
Questo esempio mostra come
lock
unlock
e può essere utilizzato per proteggere i dati condivisi .
Original:
This example shows how
lock
and unlock
can be used to protect shared data.
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> int g_num = 0; // protected by g_num_mutex std::mutex g_num_mutex; void slow_increment(int id) { for (int i = 0; i < 3; ++i) { g_num_mutex.lock(); ++g_num; std::cout << id << " => " << g_num << '\n'; g_num_mutex.unlock(); std::this_thread::sleep_for(std::chrono::seconds(1)); } } int main() { std::thread t1(slow_increment, 0); std::thread t2(slow_increment, 1); t1.join(); t2.join(); }
Possible output:
0 => 1 1 => 2 0 => 3 1 => 4 0 => 5 1 => 6
[modifica] Vedi anche
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) |