Espaces de noms
Variantes

std::recursive_mutex::lock

De cppreference.com

[edit template]

<metanoindex/>

 
 
Bibliothèque de support fil
Threads
Original:
Threads
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread (C++11)
this_thread espace de noms
Original:
this_thread namespace
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
get_id (C++11)
yield (C++11)
sleep_for (C++11)
sleep_until (C++11)
L'exclusion mutuelle
Original:
Mutual exclusion
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex (C++11)
timed_mutex (C++11)
Gestion du verrouillage générique
Original:
Generic lock management
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
lock_guard (C++11)
unique_lock (C++11)
defer_lock_t
try_to_lock_t
adopt_lock_t
(C++11)
(C++11)
(C++11)
lock (C++11)
try_lock (C++11)
defer_lock
try_to_lock
adopt_lock
(C++11)
(C++11)
(C++11)
Les variables de condition
Original:
Condition variables
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
condition_variable (C++11)
condition_variable_any (C++11)
notify_all_at_thread_exit (C++11)
cv_status (C++11)
Futures
Original:
Futures
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
promise (C++11)
future (C++11)
shared_future (C++11)
packaged_task (C++11)
async (C++11)
launch (C++11)
future_status (C++11)
future_error (C++11)
future_category (C++11)
future_errc (C++11)
 
std::recursive_mutex
Les fonctions membres
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
recursive_mutex::recursive_mutex
Verrouiller
Original:
Locking
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
recursive_mutex::lock
recursive_mutex::try_lock
recursive_mutex::unlock
Handle natif
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.
recursive_mutex::native_handle
 
<tbody> </tbody>
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.

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.

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.

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.

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.

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.

#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();
}

Résultat possible :

0 => 1
1 => 2
0 => 3
1 => 4
0 => 5
1 => 6

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) [edit]
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) [edit]