programme pour imprimer les numéros impairs et même numéros séparées sur les threads
Je suis en train d'apprendre la programmation à l'aide des pthreads.
Comment puis-je écrire un programme pour imprimer les numéros impairs et même des numéros sur des threads séparés.
La sortie doit être 1,2,3.....Mais un nombre impair et même les numéros devraient être imprimés sur des threads séparés.
Vous ne pouvez pas garantir l'ordre de la sortie de deux threads différents apparaîtra à moins d'utiliser un mutex.
un mutex n'est pas garant de l'ordre. Lorsque le thread A libère le mutex, il n'y a aucune garantie thread B va être réveillé avant d'enfiler Une demande pour cela.
+1 - Utile pour quelqu'un qui est d'enseigner eux-mêmes la façon de travailler avec les pthreads.
Vous ne pouvez pas garantir l'ordre de la sortie de deux threads différents apparaîtra à moins d'utiliser un mutex.
un mutex n'est pas garant de l'ordre. Lorsque le thread A libère le mutex, il n'y a aucune garantie thread B va être réveillé avant d'enfiler Une demande pour cela.
+1 - Utile pour quelqu'un qui est d'enseigner eux-mêmes la façon de travailler avec les pthreads.
OriginalL'auteur user329013 | 2010-04-30
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de deux objets de synchronisation comme un sémaphore ou d'une variable de condition. L'idée est que le fil d'Une demande de sémaphore Un avant de l'imprimer et de communiqués de sémaphore B, tandis que le thread B fait le contraire.
L'idée est que, après Un thread demande Un sémaphore, il va tomber le sémaphore à 0. La prochaine fois, il demande Un sémaphore, il bloquera jusqu'à ce que le fil B libère le sémaphore.
En pseudo code, cela ressemble à:
Puisque vous voulez apprendre par vous-même fils de programmation, je vais vous laisse le soin de le convertir en un réel pthreads code.
+1 pour l'enseignement pour les poissons 🙂
OriginalL'auteur R Samuel Klatchko
Je pense que l'utilisation d'une variable de condition et un mutex peut résoudre ce problème.
OriginalL'auteur Vishal Kanaujia
Passer un valeur de l'indicateur pour indiquer si le fil devrait être l'impression de nombre impair ou même nombre par le biais de la fonction de thread argument.
Selon la même chose, commencer à partir de 0 (pour le même nombre) ou 1 (pour les numéros impairs) et de garder l'incrémentation par 2 à la fois le fils et l'imprimer.
Vous pouvez également imprimer le fil d'identification avec le numéro pour indiquer le thread qui est de l'impression de ce.
Je suppose que vous savez comment utiliser les pthreads.
[Mise à jour]: Lien pour pthreads
Même avec l'utilisation de sémaphores ou d'un mutex, il est difficile pour vous d'obtenir la sortie afin de 1,2,3 etc que vous ne savez jamais thread qui va avoir la chance de s'exécuter en premier. Pour cela, vous pouvez utiliser des concepts avancés comme la priorité de thread ou la communication Inter-thread à l'aide de variables conditionnelles. Ce sont juste des conseils. J'espère que si vous passez par le lien, vous obtiendrez plus d'informations.
OriginalL'auteur Jay
OriginalL'auteur Anish Kumar V S
Logiquement, vous pouvez contrôler à l'aide d'un drapeau ( printOdd ) avec une variable (valeur) constamment incrémenté sur l'impression à chaque fois.
À l'aide de lambda dans java 8,
}
La sortie est comme suit.
OriginalL'auteur jegadeesh
En JAVA ...
OriginalL'auteur sandeep jaisawal