Lesen C# -Dokumentation, ich frage mich, wie man wissen kann, ob das IO blockiert oder nicht. Zum Beispiel die BinaryWriter.Write-Methode, ich kann keine Informationen in der Dokumentation finden, ob die Methode blockiert.Wie können wir wissen, dass ein IO Blocking oder Non-Blocking ist
Antwort
BinaryWriter.Write
kehrt nur zurück, wenn seine Arbeit abgeschlossen ist. Das macht es blockiert. Die Wartezeit ist möglicherweise unbegrenzt.
Asynchrone Methoden sind normalerweise leicht zu erkennen, da sie Task
oder IAsyncResult
(entspricht dem alten APM-Muster) zurückgeben. Sie sind auch entsprechend benannt (BeginXxx
oder XxxAsync
). Wenn eine solche Methode zurückgegeben wird, haben Sie das Ergebnis noch nicht. Das zeigt Ihnen, dass die Berechnung noch nicht abgeschlossen ist.
Die Dokumentation ruft diese Eigenschaft für asynchrone Methoden auf. Da fast alle Methoden blockierend und synchron sind (z. B. alle Zeichenfolgenmethoden), wird dieses Verhalten in den Dokumenten nicht angegeben. Es ist die Standardeinstellung.
Da es BeginWrite
und seine entsprechenden EndWrite
Methoden nicht zur Verfügung stellt, muss es blockiert werden.
- 1. NodeJS & Non-Blocking IO verstehen
- 2. Undertow wie Non-blocking IO?
- 3. Können wir sagen, dass ein Router ein Netzwerk ist?
- 4. Wie können wir wissen, dass ein neuer Kontakt zu Android hinzugefügt wurde?
- 5. Wie kann man wissen, dass ein Socket blockiert ist oder nicht? Unter Windows
- 6. Wenn ein Webserver nicht blockierend ist, heißt das, dass IO genauso behandelt wird wie node.js?
- 7. Wie können wir wissen, dass NP-vollständige Probleme am schwierigsten in NP sind?
- 8. Können wir wissen, ob wir mit youtube api streamen?
- 9. Wie können wir App-Nutzer wissen lassen, dass Verbindungen über SSL hergestellt werden?
- 10. Wie können wir wissen, dass der Übergang von Activity Shared Elements ausgeführt wird?
- 11. Können wir wissen, ob ein Python-Skript von Windows oder einem Textterminal gestartet wird?
- 12. In Javascript, wie können wir identifizieren, ob ein Objekt ein Hash oder ein Array ist?
- 13. Wie Sie wissen, dass ein Gerät mit Chromecast verbunden ist
- 14. Können wir eine Funktion überladen, nur weil ein Parameter ein Wert oder eine Referenz ist?
- 15. Wie können wir ein Objekt jederzeit laden?
- 16. Wie können wir ein Vektorbild kacheln?
- 17. Non-Blocking-connect() mit Winsocks
- 18. Wie NFC in unserer Anwendung zu verwenden und wie können wir wissen, dass das Gerät NFC unterstützt?
- 19. Wie können wir ein Label ändern?
- 20. Java nonblocking Speicherzuweisung
- 21. Wie können wir testen, dass eine Klasse viele Schnittstellen implementiert?
- 22. Wie verwendet .NET IO Threads oder IO Completion Ports?
- 23. Wie unterscheidet man, dass ein Typ ValueType oder RefereceType ist?
- 24. Wie können Sie sicherstellen, dass ein Benutzer weiß, dass er auf Ihrer Website ist?
- 25. MPI_Rsend: Wie zu wissen, dass ein Empfangspuffer bereits gebucht
- 26. Können wir ein Java-Mitglied schmerzlos lazy laden, ähnlich wie wir es mit statischen Singletons können?
- 27. Wie können wir Popup in FitNesse hinzufügen?
- 28. Azure Logic App - Wie können wir Updates kontrollieren oder verwalten?
- 29. Wie Sie wissen, dass ein Dialogfeld eine Warnung ist oder bestätigen Sie oder Aufforderung mit VB.Net Winform App?
- 30. Cloud9 IO Deaktivierung Tastenbindungen oder Cloud9 Alternative
Ich denke eine sichere Faustregel besagt, dass Methoden synchron sind, es sei denn, die Dokumente geben ausdrücklich an, dass sie asynchron sind. Ein anderes Muster, das das Framework verwendet, besteht darin, asynchrone Methoden mit "Async" zu versehen oder BeginXXX/EndXXX-Methodenpaare bereitzustellen. –