Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1229 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Synchronisation de threads - Sémaphore, Mutex ou SRWLock ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Synchronisation de threads - Sémaphore, Mutex ou SRWLock ?

n°1561612
buzzkaido
Posté le 17-05-2007 à 14:45:57  profilanswer
 

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 ?

mood
Publicité
Posté le 17-05-2007 à 14:45:57  profilanswer
 

n°1562099
tbp
Posté le 18-05-2007 à 15:31:40  profilanswer
 

Le plus rapide est vraisemblablement de ne pas utiliser de lock du tout (google: lockless) et de mettre à jour en garantissant la cohérence. Je dis vraisemblablement parce que dans certaine situations - surtout si on veut garantir l'équité (google: fairness) - les locks peuvent être plus efficaces.
En fait la question est trop vague pour décider: quid des cas de famine pour l'écriture (google: contention, starvation...)... etc...
 
PS: mutex, sémaphore c'est du pareil au même dans ce contexte.


Message édité par tbp le 18-05-2007 à 15:33:46

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Synchronisation de threads - Sémaphore, Mutex ou SRWLock ?

 

Sujets relatifs
[boost::thread] Comment limiter le nombre de threads simultanésappel des threads dans une boucle while
Java threads : wait() & notify()Threads Posix et verrous
synchronisation de la capture audio sur une source de temps externeSimulation de threads en javascript
Conseils appli local & synchronisation onlineLister les threads en C
Fork() et threads 
Plus de sujets relatifs à : Synchronisation de threads - Sémaphore, Mutex ou SRWLock ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR