Espaces de noms
Variantes
Actions

std::lock

De cppreference.com
< cpp‎ | thread

 
 
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)
 
Déclaré dans l'en-tête <mutex>
template<class Lockable1, class Lockable2, class LockableN... >
void lock( Lockable1& lock1, Lockable2& lock2, LockableN& lockn... );
(depuis C++11)
Verrouille la donnée Lockable objets lock1, lock2, ..., lockn l'aide d'un algorithme d'évitement de blocage pour éviter une impasse .
Original:
Locks the given Lockable objects lock1, lock2, ..., lockn using a deadlock avoidance algorithm to avoid deadlock.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Les objets sont verrouillés par une série indéterminée d'appels à lock, try_lock, unlock. Si un appel à lock ou unlock entraîne une exception, unlock est appelée pour tous les objets verrouillés avant rethrowing .
Original:
The objects are locked by an unspecified series of calls to lock, try_lock, unlock. If a call to lock or unlock results in an exception, unlock is called for any locked objects before rethrowing.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Sommaire

[modifier]Paramètres

lock1, lock2, ... , lockn -
l'Lockable objets à verrouiller
Original:
the Lockable objects to lock
The text has been machine-translated via Google Translate.
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.

[modifier]Exemple

L'exemple suivant utilise std::lock pour verrouiller paires de mutex sans impasse .
Original:
The following example uses std::lock to lock pairs of mutexes without deadlock.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <mutex>#include <thread>#include <iostream>#include <vector>#include <functional>#include <chrono>   struct Employee { Employee(int id): id(id){}int id;std::vector<int> lunch_partners;std::mutex m;};   void send_mail(Employee &e1, Employee &e2){// simulate a time-consuming messaging operationstd::this_thread::sleep_for(std::chrono::seconds(1));}   void assign_lunch_partner(Employee &e1, Employee &e2){// use std::lock to acquire two locks without worrying about // other calls to assign_lunch_partner deadlocking us std::lock(e1.m, e2.m);   e1.lunch_partners.push_back(e2.id); e2.lunch_partners.push_back(e1.id);   e1.m.unlock(); e2.m.unlock();   send_mail(e1, e2); send_mail(e2, e1);}   int main(){ Employee alice(0), bob(1), christina(2), dave(3);   // assign in parallel threads because mailing users about lunch assignments// takes a long timestd::vector<std::thread> threads; threads.emplace_back(assign_lunch_partner, std::ref(alice), std::ref(bob)); threads.emplace_back(assign_lunch_partner, std::ref(christina), std::ref(bob)); threads.emplace_back(assign_lunch_partner, std::ref(christina), std::ref(alice)); threads.emplace_back(assign_lunch_partner, std::ref(dave), std::ref(bob));   for(auto&thread : threads) thread.join();}


[modifier]Voir aussi

(C++11)
tente d'obtenir la propriété des mutex via des appels répétés à try_lock
Original:
attempts to obtain ownership of mutexes via repeated calls to try_lock
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(fonction générique)[edit]
close