Question

J'ai un "responsable" " processus sur un nœud, et plusieurs processus de travail. Le gestionnaire est le serveur réel qui détient toutes les connexions aux clients. Le gestionnaire accepte tous les paquets entrants et les met dans une file d'attente, puis les processus de travail extraient les paquets de la file d'attente, les traitent et génèrent un résultat. Ils renvoient le résultat au gestionnaire (en les plaçant dans une autre file d'attente lue par le gestionnaire), mais voici où je reste bloqué: comment puis-je envoyer le résultat à un socket spécifique? Lorsque vous traitez le traitement des paquets sur un seul processus, c'est facile, car lorsque vous recevez un paquet, vous pouvez y répondre en saisissant simplement le "transport". objet en contexte. Mais comment ferais-je avec la méthode que j'utilise?

Était-ce utile?

La solution

Il semble que vous deviez peut-être conserver une référence au transport (ou au protocole) avec les octets que vient d'arriver sur ce protocole dans votre objet "événement". De cette façon, les réponses reçues sur une connexion sortent sur la même connexion.

S'il n'est pas nécessaire de traiter les éléments en série, vous devriez peut-être envisager de configurer des foncteurs capables de gérer les données en parallèle pour éliminer le besoin de mettre en file d'attente. N'oubliez pas que vous devrez protéger les sections critiques de votre code.

Modifier: À en juger par votre autre question sur l’évaluation de la conception de votre serveur, il semblerait qu’un traitement en parallèle ne soit pas possible dans votre cas, c’est pourquoi ma première suggestion est valable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top