2010-12-10 72 views
1

J'ai une classe qui appelle au moins un thread. La classe peut avoir plusieurs threads. Ce thread doit appeler des membres statiques de la classe. Dois-je utiliser un mutex avant chaque appel aux membres statiques, afin que les autres threads ne puissent pas appeler les membres en même temps? Puis-je utiliser la même variable mutex pour toutes les différentes fonctions membres statiques de la classe? J'utilise la bibliothèque pthreads.Utilisation de mutex sur des fonctions de membre de classe statiques

Répondre

0

Ceci est une question multithreading compliquée et séculaire sans réponse directe. Cela dépend vraiment de vos habitudes:

  • Ces membres statiques ont-ils beaucoup accès?
  • Ces membres sont-ils accessibles simultanément par plusieurs threads à la fois (par opposition à un couple)?
  • Quels sont les membres statiques les plus utilisés?
  • Les membres statiques multiples sont-ils utilisés ensemble?
  • Les opérations impliquent-elles principalement la lecture?

Les réponses à des questions comme celles-ci peuvent aider à déterminer la solution à appliquer. Par exemple, si vous avez besoin d'un débit , un seul mutex peut être plus efficace. Si vous voulez minimiser la latence , plusieurs mutex sur des membres indépendants (ceux qui n'ont pas besoin d'être utilisés avec un autre) aideront à minimiser les conflits entre les threads. Si la lecture est l'action principale, vous n'aurez peut-être même pas besoin d'un mutex - consultez pthread_rwlock.