std::recursive_mutex::lock
De cppreference.com
< cpp | thread | recursive mutex
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
void lock(); | (depuis C++11) | |
Verrouille le mutex. Si un autre thread a déjà verrouillé le mutex, un appel à
lock
bloque l'exécution jusqu'à ce que le verrou est acquis .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.
Sommaire |
[modifier]Paramètres
(Aucun)
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.
[modifier]Retourne la valeur
(Aucun)
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.
[modifier]Exceptions
std::system_error jette quand des erreurs se produisent, y compris les erreurs du système d'exploitation sous-jacent qui empêcheraient
lock
de respecter ses spécifications .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.
[modifier]Exemple
Cet exemple montre comment
lock
et unlock
peut être utilisé pour protéger les données partagées . 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_mutexstd::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();}
Résultat possible :
0 => 1 1 => 2 0 => 3 1 => 4 0 => 5 1 => 6
[modifier]Voir aussi
essaie de verrouiller le mutex, retourne si le mutex n'est pas disponible 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. (fonction membre publique) | |
déverrouille le 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. (fonction membre publique) |