Freigeben über


Benannte Pipeinstanzen

Der einfachste Pipeserver erstellt eine einzelne Instanz einer Pipe, stellt eine Verbindung mit einem einzelnen Client her, kommuniziert mit dem Client, trennt vom Client, schließt den Pipehandle und beendet. Es ist jedoch häufiger, dass ein Pipeserver mit mehreren Pipeclients kommunizieren kann. Ein Pipeserver könnte eine einzelne Pipeinstanz verwenden, um eine Verbindung mit mehreren Pipeclients herzustellen, indem eine Verbindung mit jedem Client hergestellt und getrennt wird, die Leistung wäre jedoch schlecht. Der Pipeserver muss mehrere Pipeinstanzen erstellen, um mehrere Clients gleichzeitig zu verarbeiten.

Es gibt drei grundlegende Strategien für die Wartung mehrerer Pipeinstanzen.

Der Multithread-Pipeserver ist am einfachsten zu schreiben, da der Thread für jede Instanz die Kommunikation für einen einzelnen Pipeclient verarbeitet. Das System weist jedem Thread nach Bedarf Prozessorzeit zu. Jeder Thread verwendet jedoch Systemressourcen, was für einen Pipeserver, der eine große Anzahl von Clients verarbeitet, einen Nachteil darstellt.

Mit einem Singlethread-Server ist es einfacher, Vorgänge zu koordinieren, die sich auf mehrere Clients auswirken, und es ist einfacher, freigegebene Ressourcen vor gleichzeitigem Zugriff durch mehrere Clients zu schützen. Die Herausforderung eines singlethreaded-Servers besteht darin, dass es eine Koordination von überlappenden Vorgängen erfordert, um Prozessorzeit für die Behandlung der gleichzeitigen Anforderungen von Clients zuzuweisen.