Frage

Ich habe einen „Manager“ Prozess auf einem Knoten und mehrere Arbeitsprozesse. Der Manager ist der eigentliche Server, der alle Verbindungen zu den Kunden hält. Der Manager nimmt alle eingehenden Pakete und legt sie in eine Warteschlange, und ziehen Sie dann die Arbeitsprozesse, die Pakete aus der Warteschlange, verarbeiten sie und ein Ergebnis erzeugen. Sie senden das Ergebnis zurück an den Manager (indem man sich in einer anderen Warteschlange setzen, die vom Manager gelesen wird), aber hier sind, wo ich stecken: wie kann ich das Ergebnis zu einem bestimmten Socket senden? Wenn bei der Verarbeitung der Pakete auf einem einzigen Prozess zu tun, ist es einfach, weil, wenn Sie ein Paket erhalten, können Sie darauf antworten, indem nur im Kontext das „Transport“ Objekt greifen. Aber wie würde ich tun dies mit der Methode ich verwende?

War es hilfreich?

Lösung

Es klingt wie Sie das nur einen Verweis auf den Transport (oder Protokoll) zusammen mit dem Bytes halten müssen möglicherweise kam in Ihrem ‚Ereignisse‘ Objekt auf diesem Protokoll in. Auf diese Weise Antworten, die auf eine Verbindung auf derselben Verbindung ausgehen kamen.

Wenn die Dinge nicht seriell vielleicht verarbeitet werden müssen, sollten Sie denken über das Einrichten von functors, die die Daten parallel verarbeiten kann die Notwendigkeit für Warteschlangen zu entfernen. Denken Sie daran, dass Sie kritische Abschnitte des Codes schützen müssen.

Edit: Geht man von Ihrer anderen Frage zu Ihrem Server-Design Auswertung wäre es, dass die Verarbeitung parallel scheinen mag für Ihre Situation nicht möglich sein, so mein erster Vorschlag steht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top