Bonjour,
Voila, j'ai une appli qui tourne avec plusieurs threads.
Ces differents threads se partagent des données.
Tous les threads accedent en lecture à ces données.
Tous les threads, sauf 1 qui est spécial accedent aussi en ecriture.
Voila mon probleme :
Le thread qui n'accedent qu'en lecture est le moteur principal du logiciel, il doit donc pouvoir s'executer le plus rapidement possible.
Les autres threads peuvent se permettre d'attendre un peu, c'est pas genant.
Je pense faire un truc du genre :
Acces en lecture :
- tant qu'une ecriture n'est pas en attente, on autorise la lecture.
- pendant la lecture, on interdit l'ecriture.
Acces en ecriture :
- on fait une demande d'ecriture (qui va bloquer les fonctions de lecture)
- on attend que toutes les lectures en cours soient terminées
- on ecrit
- on debloque la lecture
Vu que les performances du thread principal (que lecture) sont essentielles dans ce projet, quel objet de synchronisation utiliser ?
J'ai pensé à "Slim Reader/Writer (SRW) Locks" : http://msdn2.microsoft.com/en-us/library/aa904937.aspx
D'après la doc, c'est le plus rapide, mais je ne sais pas trop comment l'utiliser...
Des idées ?