l'impression étrange et même le nombre d'impression en alternance à l'aide de threads en C++

Étrange même nombre d'impression à l'aide de fil Je suis tombé sur cette question et je voulais discuter de la solution en C++ . Ce que je peux penser à l'aide de 2 sémaphores binaires paires et impaires de sémaphore. même sémaphore initialisé à 1 et de l'impair initialisé à 0.

**T1 thread function** 
funOdd()
{  
  wait(even)  
  print odd;  
  signal(odd)  
}


**T2 thread function**
funEven()  
{  
  wait(odd)  
  print even  
  signal(even)  
}  

En plus de cela, si mes fonctions sont la génération de nombre et il y a un troisième fil T3 qui va imprimer ces numéros, ce qui devrait être la conception idéale ? J'ai utilisé un tableau où nombre impair sera placé à l'endroit bizarre et même le nombre aura lieu à la même position. T3 de lecture à partir de cet ensemble cela permettra d'éviter tout thread de sécurité sur ce tableau et si T3 ne trouve aucun indice puis il va attendre jusqu'à ce que l'index est renseigné. Une autre solution peut être d'utiliser une file d'attente qui aura un mutex qui peut être utilisé par T1 et T2 alors que d'insertion.

S'il vous plaît commentaire sur cette solution, et comment la rendre plus efficace.

Modifier pour rendre le problème bien clair: Globalement, le problème est que j'ai deux producteurs (T1,T2) et un consommateur (T3), et mes producteurs sont interdépendants.

Si vous voulez en série le comportement de ne pas utiliser des threads.
Je peux l'éviter thread dans ce cas, mais c'est très valable scénario où mes 2 fils sont dépendantes les unes des autres.
J'essaie vraiment dur de suivre cette question et ont découvert que, sans code (un quasi-universelle de la langue, de l'enregistrer pour insolite var noms) la description est boueux à suivre, et dans certains endroits, quasi-impossible. regarde comme vous êtes deux producteurs (T1,T2) et un consommateur (T3), mais votre les producteurs sont interdépendants. Je suis aussi curieux de voir comment "si T3 ne trouve aucun indice puis il va attendre jusqu'à ce que l'index est renseigné." va tenir sans la synchronisation de genre. Enfin, "très valide"? Valide est un peu. Il est, ou il ne l'est pas.
T3 pouvez dormir pendant un certain temps et vérifiez de nouveau pour cet indice. si l'indice est peuplée, puis passer à la prochaine reste dormir à nouveau. Pourquoi pensez-vous que nous avons besoin de synchronisation pour le tableau Pouvez-vous m'expliquer un scénario où j'aurai besoin de synchronisation ?
cette question ont tout suivi? en fin de compte, quelle est votre réponse?

OriginalL'auteur user258367 | 2013-02-01