Comment fonctionne un mutex / verrou en lecture / écriture?

Disons que je suis de programmation dans un enfilage cadre qui n'a pas plusieurs-lecteur/unique écrivain mutex. Puis-je mettre en œuvre leurs fonctionnalités avec les éléments suivants:

Créer deux mutex: récursive (verrouillage de comptage) un pour les lecteurs et un binaire pour l'écrivain.

Écrire:

  • acquérir verrouillage sur binary mutex
  • attendre jusqu'à ce que récursive mutex a nombre de verrous de zéro
  • réelle écriture
  • verrouillage sur binary mutex

Lire:

  • acquérir verrouillage sur binary mutex (donc je sais que l'écrivain n'est pas actif)
  • incrément comte de récursive mutex
  • verrouillage sur binary mutex
  • réels lire
  • décrémenter le nombre de récursive mutex

Ce n'est pas de devoirs. Je n'ai aucune formation formelle dans la programmation simultanée, et essaie de comprendre les questions. Si quelqu'un peut indiquer un défaut, d'en définir les invariants ou de fournir un meilleur algorithme, je serais très heureux. Une bonne référence, que ce soit en ligne ou sur des arbres morts, serait également appréciée.

source d'informationauteur Fred Foo