Bonjour cher forum,
Je ne suis pas forcement très rompu à la programmation thread, aussi je bute sur un "petit" problème:
J'ai un thread A qui est connecté à un équipement (un automate dans mon cas) via socket. Il a une liste chainée de messages a envoyer et il reçoit de manière asynchrone des comptes rendu.
J'ai un autre thread B qui lui remplit la liste du thread A.
Je voudrais que le thread A reste en attente sur le socket et en même temps sur le semaphore lié à la liste pour pouvoir a la fois recupérer les comptes rendu et envoyer les nouveau messages.
J'avais d'abord penser rester sur un recv et que le thread B envoit un signal qui l'interrompe, mais si le thread B est trop "agressif", on ne recupère plus les compte rendu.
Le problème est peut-être plus lié a un problème de conception, dans ce cas je suis ouvert à la critique :-)
D'avance merci.
# Sémaphore + Socket
Posté par Obsidian . Évalué à 4.
Mais dans les deux cas, tu peux préciser des jeux de sockets ou de sémaphores qui seront examinés de manière atomique.
Dans ton cas, c'est surtout un select() sur les sockets qui t'intéresse, donc laisse tomber le sémaphore et utilise deux sockets.
Bon courage;
[^] # Re: Sémaphore + Socket
Posté par ChickenKiller . Évalué à 1.
J'avais aussi penser à ça mais j'avoue que je trouvais ça un peu lourd. Tant pis! Je vais essayer ça ;-)
Merci.
[^] # Re: Sémaphore + Socket
Posté par Obsidian . Évalué à 3.
[^] # Re: Sémaphore + Socket
Posté par ChickenKiller . Évalué à 1.
[^] # Re: Sémaphore + Socket
Posté par Obsidian . Évalué à 2.
[^] # Re: Sémaphore + Socket
Posté par ChickenKiller . Évalué à 1.
[^] # Re: Sémaphore + Socket
Posté par Obsidian . Évalué à 2.
Donc, Je suppose que tu utilises pthread, et que tes deux threads partagent la même espace mémoire par défaut.
Tu n'es donc pas obligé de tout faire passer par ton socket, mais tu peux juste y envoyer un caractère qui servira de signal comme tu le ferais avec un sémaphore.
[^] # Re: Sémaphore + Socket
Posté par ChickenKiller . Évalué à 2.
Je peux effectivement utiliser le socket comme ça. Je vais tenter cette voie.
Merci !
# re
Posté par Sylvain (site web personnel) . Évalué à 2.
http://linuxonfire.free.fr/cnam/socket.pdf
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.