2010-02-23 3 views
0

Nous avons trois threads ou plus, pouvons-nous utiliser seulement deux sémaphores (sémaphores binaires ou de comptage)? Une idée qui m'est venue à l'esprit est de jouer avec le nombre de sem_post-s et sem_wait-s. Toutes les idées, stratégies sont les bienvenues.est-il possible d'utiliser seulement deux sémaphores pour synchroniser trois threads ou plus?

+0

La réponse de mouviciel est précise et probablement suffisante - le nombre de sémaphores est vraiment indépendant du nombre de threads. Je sémaphore simple peut synchroniser des centaines de discussions, mais peut-être qu'il y a plus à votre question. Pouvez-vous élaborer un peu sur ce que vos threads font et pourquoi ils ont besoin d'être synchronisés? –

Répondre

2

Un sémaphore est utilisé pour protéger une ressource partagée. Vous avez besoin d'autant de sémaphores que de ressources partagées, ce n'est pas lié au nombre de threads qui accèdent à ces ressources.

+0

si vous avez une simultanéité entre les threads et la condition de concurrence se produit, un sémaphore ne suffit pas. c'est-à-dire qu'il y a trois threads qui exécutent plusieurs itérations. Si je veux que ces trois threads s'exécutent dans un ordre particulier, disons: itération 0 - threadA, threadB, threadC; itération 1 - threadA, .... plusieurs sémaphores doivent être implémentés. Jusqu'à présent, j'ai découvert qu'il pouvait y avoir deux sémaphores. Cependant, pourrait-il être fait avec un seul? – user228137

+0

Pourquoi utiliser des threads s'ils sont exécutés séquentiellement? répondre à cette question peut révéler des ressources cachées que vous souhaitez protéger. – mouviciel

Questions connexes