[Solved] boost::unique_lock sur un shared_lock

boost::unique_lock sur un shared_lock [Solved] - C++ - Programmation

Marsh Posté le 20-09-2010 à 18:15:06    

J'utilise boost::thread pour une application, et bien que mon code commence à maturer ( :o ) j'ai parfois de soucis de synchronisation (semble-t-il, car ce problème ne survient que si j'utilise plus d'un thread pour traiter).
 
J'ai supprimé carrément un appel a un unique_lock, lors de l'écriture (situation single-writer, multiple-readers), pour voir : ben ça fait pareil, de temps en temps une écriture sur le meme endroit. C'est comme si mon unique_lock n'attendait pas que tous les lecteurs aient terminé.
Exemple :
 
Section d'écriture :  
 

Code :
  1. boost::unique_lock< boost::shared_mutex> uniqueLock(*m_mutex);
  2. …écrire…
  3. sortie


 
Section lecture :

Code :
  1. boost::shared_lock<boost::shared_mutex> l(*m_mutex);
  2. lecture
  3. sortie


 
Je m'attend à ce que le thread qui rentre dans la section écriture attende que tous les lecteurs aient relaché leur lock (shared), pour ensuite prendre un lock exclusif (aucun lecteur ne peut entrer dans une section lecture), ecrit, relache, les lecteurs peuvent reprendre.
 
Si c'est bien cela qui se passe, alors j'ai un bug quelque part  :cry:
 
 
[edit] Bon ben solved, mon bug était pas si difficile à trouver… Donc ça se comporte comme attendu  [:jayz]


Message édité par guepe le 20-09-2010 à 20:09:36

---------------
Un blog qu'il est bien
Reply

Marsh Posté le 20-09-2010 à 18:15:06   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed