Heim >Backend-Entwicklung >C++ >Warten Sie im Vergleich zu .NET -Asynchron -Programmierung: Warum führt die Verwendung von 'Ergebnis' zu Deadlocks?
Der Unterschied zwischen und await
: Warum Result
verwenden, um tote Schlösser zu verursachen? Result
In der .NET -asynchronen Programmierung ist es sehr wichtig, den Unterschied zwischen
zu verstehen. await
Ermöglichen Sie die kollaborative Multi -Task -Verarbeitung, und Result
kann tote Schlösser verursachen. await
Result
Obstruktion await
Result
Das Testprogramm wird im Beispiel aufgehängt, weil es versucht,
-Eltr ERECTION zweimal gleichzeitig zu erhalten. Dies kann tote Schlösser verursachen, da die zugrunde liegende HTTP -Anfrage beim Warten auf die Antwort blockiert wird. CheckStatusTwiceResultTest
Result
CheckStatus()
Die Vorteile von
Das Schlüsselwort ermöglicht die Ausführung der Pause -Methode, und die Ausführung wird wieder aufgenommen, nachdem der asynchrone Betrieb abgeschlossen ist. In diesem Beispiel hängt zur Laufzeit nicht, da await
Schlüsselwörter auf andere Aufgaben gesteuert werden, wenn Sie auf die HTTP -Antwort warten.
await
CheckStatusAwaitTest
Erweiterungsmethode Erstellen Sie eine await
und verwenden Sie die asynchrone Kommission, um ihre Ergebnisse festzulegen. Das Aufrufen von
. Vermeiden Sie tote Schlösser
ExecuteTaskAsync
Um tote Schlösser zu vermeiden, werden immer die Ergebnisse von TaskCompletionSource
asynchronen Operationen verwendet. Die beste Praxis besteht darin, zu vermeiden, Result
in der Aufgabe aufzurufen, insbesondere wenn sie in UI -Threads oder in anderen empfindlichen Umgebungen durchgeführt werden. CheckStatusTwiceResultTest
Verwenden Sie die Methode Ausführung
im Code. Bei asynchronen Methoden wird dies nicht empfohlen, da await
einen neuen Thread zuordnen. Stattdessen sollte die durch das .NET -Framework bereitgestellte inhärente Asynchronität verwendet werden, und die Methode sollte auf asynchrone Methoden eingestellt werden. Result
Das obige ist der detaillierte Inhalt vonWarten Sie im Vergleich zu .NET -Asynchron -Programmierung: Warum führt die Verwendung von 'Ergebnis' zu Deadlocks?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!