Win7 x64, C++, Win32-API, Konsole app, Visual Studio Gemeinschaft 2015Win32 Named Pipe Verhalten
ich abgekocht habe alle SO Fragen über Named Pipes und kann die Antwort nicht gefunden ich brauche.
Ich schreibe einen Server zum Senden von Daten in einer Richtung über Named Pipe zu mehreren identischen Clients auf dem gleichen Computer. Der Server und jeder Client befindet sich in einem eigenen Prozess (.exe). Die Daten werden gesendet, wenn alle die Clients haben irgendwie zurück zum Server signalisiert, dass sie bereit sind (über benanntes Ereignis oder anderen Mechanismus).
Die documentation besagt, dass mehrere Clients eine Verbindung zu einer einzelnen Pipe-Instanz herstellen können, aber dann weiter über multiple instances sprechen.
Ich habe einige Fragen über das Rohr auf der Server-Seite:
- Für eine kleine Anzahl von Clients und geringen Durchsatz, das ist die einfachste: 1 Faden, 1 Pipe-Instanz; 1 Thread- und mehrere Pipe-Instanzen; mehrere Threads und eine Instanz pro Thread?
- Wenn ein einzelner Thread mehrere Male auf derselben Instanz einer Pipe
ConnectNamedPipe
ausführt, bedeutet dies, dass eine einzigeWriteFile
an alle Clients gesendet wird, die mit dieser bestimmten Instanz der Pipe verbunden sind? - Wenn mehrere Clients eine Verbindung zu einer bestimmten Instanz einer Pipe herstellen können, schreibt sie vom serverseitigen Block in diese Pipe, bis alle die Clients die vorherige Nachricht gelesen haben?
- Ist eine Eins-zu-viele-Situation ungewöhnlich? Warum?
* Die Dokumentation besagt, dass mehrere Clients eine Verbindung zu einer einzelnen Pipe-Instanz herstellen können * - Nein, Sie haben sie falsch gelesen und/oder falsch verstanden. Jede Instanz kann jeweils nur einen einzelnen Client unterstützen. (Und um Ihre Frage zu beantworten, ist bei einer kleinen Anzahl von Clients und geringem Durchsatz die Verwendung eines Threads pro Client am einfachsten.) –