Verrous à plusieurs lecteurs et à écriture unique dans Boost

Je suis en train de mettre en œuvre le code suivant dans un multithreading scénario:

Get shared access to mutex
Read data structure
If necessary:
   Get exclusive access to mutex
   Update data structure
   Release exclusive lock
Release shared lock

Boost fils a un shared_mutex classe qui a été conçu pour plusieurs lecteurs, un seul écrivain de modèle. Il y a plusieurs stackoverflow des questions concernant cette classe. Cependant, je ne suis pas sûr qu'il s'adapte le scénario ci-dessus où tout lecteur peut devenir un écrivain. La documentation précise:

La UpgradeLockable concept est un
le raffinement de la SharedLockable
concept qui permet évolutive
la propriété ainsi que le partage de la propriété
et la propriété exclusive. C'est un
extension aux multiples-reader /
une seule écriture modèle fourni par la
SharedLockable concept: un unique
thread peut avoir évolutive de la propriété
dans le même temps, comme d'autres l'ont partagé
la propriété.

Du mot "unique", je soupçonne qu'un seul thread peut tenir d'une mise à niveau de verrouillage. Les autres ne détiennent un verrou partagé qui ne peut pas être mis à niveau vers un verrou exclusif.

Savez-vous si boost::shared_lock est utile dans cette situation (n'importe quel lecteur peut devenir un écrivain), ou si il y a d'autres façon d'atteindre cet objectif?

source d'informationauteur Amnon