Lesen bei Named Pipe ohne blockieren -> PeekNamedPipe oder overlapped I/O?
-
Aktuell arbeite ich an der Komunikation zwischen PC's mittels named pipes.
Welche Methode ist die bessere um bei einer leeren pipe das Blokieren beim Lesen zu verhindern?
Mir sind 2 Methoden bekannt.
Einmal vor dem Lesen mittels PeekNamedPipe nachschaun ob Daten vorhanden sind oder das Arbeiten mit overlapped I/O.Ich habe in einem Microsoft Artikel gelesen dass unter Umständen overlapped I/O nicht funktioniert und trotzdem blockiert.
Weis zufällig jemand unter welchen Umständen dies geschieht?Welche der beiden Methoden ist besser für eine stabile Komunikation geeignet?
mfg Bernhard
-
Je nach Anwendung habe ich beides schon verwendet. Ein blockieren habe ich bei korrekter Anwendung von Pipes mit Overlapped I/O noch nicht festgestellt.
Auf was beziehst Du Dich? Was willst Du genau machen?
Wenn auf Daten aus der Pipe schnell reagiert werden soll und der Thread beim warten auf diese Daten nichts zu tun hat, verwende ich meistens overlapped i/o.
Wenn Daten im normal Fall immer vorliegen verwende ich gerne auch mal PeekNamedPipe.Overlapped I/O hat den riesigen Vorteil eben über Events zu arbeiten. Damit lassen sich eben auch meistens komplexere Szenarien abbilden.
Das verwenden PeekNamedPipe ist ja mehr oder weniger nur Polling.
-
Was ich machen will ist eigentlich ganz simpel.
Ich will alle paar Stunden Daten zwischen Rechnern in einem LAN austauschen.
Dabei handelt es sich nur um wenige KB.Es geht nur darum den Daten zwischen mehreren Rechnern zu verteilen.
Wie schnell die Daten ankommen ist nicht wichtig.
Die Daten sollen nur irgendwann vollständig ankommen.