2012-10-18 10 views
6

Mi manca molto dal nuovo standard la classe modello std::shared_lock. In Boost.Thread c'è boost::shared_lock, anche boost::upgrade_lock esiste.Come creare un shared_lock o upgrade_lock nel C++ 11 standard?

Perché non esiste std :: shared_lock e std::unique_lock in C++ 11?
Come è possibile acquisire un comportamento simile a quello di boost::shared_lock, ma in puro C++ 11?

Stavo pensando di utilizzare boost::shared_lock<std::mutex>, ma questo non ha molto senso, dal momento che std::mutex non ha un membro lock_shared(). E inoltre, non esiste uno come std::shared_mutex.

+0

Se usi già Boost, penso che non abbia senso evitare 'boost :: shared_mutex' in favore di' std :: mutex'. –

risposta

11

La proposta di Howard per std::shared_mutex è stata disattivata per C++ 11 a causa della mancanza di tempo per considerarla correttamente. Lo ha proposto di nuovo per C++ 17, ed è stato discusso all'incontro di Portland questa settimana.

Nel frattempo, se è possibile utilizzare Boost, è possibile; non ci saranno nuove funzionalità per essere standardizzati.

Detto questo, vale la pena di verificare che l'utilizzo di shared_mutex sia effettivamente di vantaggio --- in molti casi non fornisce i vantaggi di prestazioni sperati dovuti alla contesa sul mutex stesso.

+0

Grazie per la tua risposta Anthony. Da allora ho fatto qualche ricerca e ho trovato questa discussione sulla proposta di Howard: http://permalink.gmane.org/gmane.comp.lib.boost.devel/211180 –

Problemi correlati