Hallo, ich versuche mit ReadFile() Daten auszulesen. Funktioniert eigentlich auch ganz gut. Was mich etwas stört: Wenn ich zuviele Daten anfrage, hänge ich immer in GetOverlappedResultEx() für die entsprechenden Millisekunden fest. Ich gehe dann auf 1 Byte zurück und lese solange bis nichts mehr kommt. Das Ganze ist etwas umständlich. Kann man nicht irgendwie abfragen, wieviele Daten abholbereit sind? Oder gibt es dafür einen anderen Ansatz das Ganze möglichst schnell zu implementieren? Danke, Peter
Unter Linux gibt es die AsyncIO Funktionen. Und was heißt hier schnell ... Übertragungsgeschwindigkeit oder Latenz ??
was hast du bei GetOverlappedResultEx als Timeout angeben? Neugier: Für was brauchst du das?
Peter II schrieb: > Neugier: Für was brauchst du das? Dazu braucht es keine Neugier; das Verhalten von ReadFile() ist natürlich davon abhängig, von welchem Gerät (mit welchem Treiber) gelesen wird. Ohne diese Informationen ist diese Frage unbeantwortbar.
Clemens L. schrieb: > Dazu braucht es keine Neugier; das Verhalten von ReadFile() ist > natürlich davon abhängig, von welchem Gerät (mit welchem Treiber) > gelesen wird. Ohne diese Informationen ist diese Frage unbeantwortbar. er hängt aber nicht ein ReadFile fest, sondern in GetOverlappedResultEx() und da steht in der Doku das es bei passenden Parametern sofort zurückkehrt.
Ohne Timeout sagt GetOverlappedResultEx() dann einfach, dass ReadFile() noch nicht fertig ist. Das eigentliche Problem ist anscheinend, das Timeout von ReadFile() zu verringern.
Es geht darum die Latenz zu minimieren. Das eigentliche Projekt ist natürlich streng geheim, weshalb ich da auch nichts näheres dazu sagen kann. Ich denke, eine gute Lösung ist, bei jedem Timeout die angefragte Menge zu halbieren bis ich dann bei 1 angekommen bin. Dann solange jedes Byte einzeln einzulesen, bis wieder ein Timeout kommt. Danach dann wieder die 'volle' Datenrate versuchen. Und schon gehts von vorne los.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.