Mit den Vorteilen von async I/O und es jetzt sehr einfach zu codieren und zu komponieren (mit Await und die TAP-Methoden) frage ich mich, wenn wir standardmäßig async verwenden und nur nach Leistung durch Synchronisierung bei Bedarf optimieren.Sollen wir standardmäßig asynchrone E/A verwenden?
Async-E/A gibt den aufrufenden Thread frei und ermöglicht, etwas anderes zu tun, während auf das Ergebnis gewartet wird. Auf der anderen Seite ist async I/O etwas langsamer als Sync.
Um reaktionsschnelle UIs zu erzwingen, fanden die WinRT-Entwickler es akzeptabel, asynchrone Methoden anzubieten.
AFAIK Windows Datei E/A intern ist async. Wenn ich dies naiv betrachte, ist mir nicht klar, warum asynchrone Datei-E/A in .NET langsamer als überhaupt synchron sein sollte.
Ich bevorzuge in der Regel Einfachheit und Robustheit und nur bei Bedarf Leistung. In der Vergangenheit haben wir die Synchronisierung standardmäßig verwendet, mit der Ausnahme, dass einige Dienste aufgerufen wurden und Plattformen wie das Telefon async erzwingen. Wir haben selten mit Async abgestimmt.
Der [pfxteam blog] (http://msdn.microsoft.com/en-us/magazine/jj133817.aspx) enthält einige interessante Informationen in diesem Zusammenhang: * "Bitte beachten Sie, dass wir keine asynchronen Versionen von hinzugefügt haben APIs mit sehr geringer Granularität, wie TextReader.Peek, weil asynchrone APIs zusätzlichen Overhead verursachen und wir verhindern wollten, dass Entwickler versehentlich in die falsche Richtung gehen, was bedeutet, dass wir uns ausdrücklich gegen asynchrone Versionen von Methoden entschieden haben auf BinaryReader oder BinaryWriter .... * –