boost :: shared_mutex mutex lecteur / écrivain unique

J’essaie d’utiliser boost :: shared_mutex pour implémenter un mutex à plusieurs lecteurs / un seul auteur. Ma question est assez simple: est-il possible pour un thread d’obtenir un access de lecteur à un shared_mutex, lorsqu’un autre thread tente de verrouiller ce shared_mutex pour l’écriture? Par exemple, j’ai 10 threads, un seul d’entre eux peut écrire,

  • le fil 1 a un shared_lock sur ce shared_mutex et essaie de lire quelque chose
  • le fil 2 a un shared_lock sur ce shared_mutex et essaie de lire quelque chose
  • le fil 3 a un unique_lock sur ce shared_mutex et essaie d’écrire quelque chose
  • le fil 4 a un shared_lock sur ce shared_mutex et essaie de lire quelque chose
  • le fil 5 a un shared_lock sur ce shared_mutex et essaie de lire quelque chose

Le shared_mutex est actuellement partagé verrouillé par le thread 2 , ma question est de savoir s’il est possible que le thread 4 puisse accéder en lecture à ce shared_mutex, avant que le thread 3 puisse écrire? Est-il possible pour un lecteur / écrivain mutex d’entrer dans une situation de famine, par exemple 100 lecteurs contre 1 écrivain?

Merci.

Apparemment, boost::shared_mutex laisse la politique d’équité à la mise en œuvre. Cela peut être soit juste, lecteur sur écrivain, soit auteur sur lecteur. Selon la version choisie, il est donc possible que l’écrivain soit affamé.