Nota: questa domanda riguarda C++ 11. La risposta alla stessa domanda in C++ 17 (o versioni successive) potrebbe essere cambiata. Per ulteriori informazioni:Qual è il modo migliore per bloccare più std :: mutex?
Quando vogliamo bloccare più std::mutex
'Es, usiamo std::lock()
. Ma std::lock()
non fornisce funzionalità RAII.
Quando si desidera bloccare un std::mutex
in modo RAII, viene utilizzato std::lock_guard
. Ma std::lock_guard
non può bloccare più std::mutex
in modo sicuro.
Esiste un modo per sfruttare i vantaggi di entrambi i metodi per bloccare più std::mutex
in modo RAII?
+1 E 'std :: lock' non è limitato a solo due blocchi. Può gestire qualsiasi numero (fino ai limiti del compilatore su modelli variadici). –
Ci sono stati dubbi sull'efficienza di 'std :: lock'. Vedi questa risposta: http://stackoverflow.com/a/14525010/576911 per rispondere a queste preoccupazioni. –