und : Die Falle des Deadlocks await
Task.Wait
In der asynchronen Programmierung ist es sehr wichtig, den Unterschied zwischen
zu verstehen. In diesem Artikel wird ein Fall analysiert, der verwendet, um tote Schlösser zu verursachen. await
Task.Wait
Task.WaitAll
: Synchrones Blockieren
blockiert den aktuellen Thread gleichzeitig, bis die Aufgabe abgeschlossen ist. Im Beispielcode warten auf die 10 Aufgaben, die von der zu erledigenden Task.Wait
-Methode zurückgegeben wurden. Dies blockiert Threads und verhindert, dass sie Follow -up -Operationen ausführen.
: Asynchrones Warten Task.Wait
Task.WaitAll
wartet
Ros()
Die zulässige Methode gibt die unvollendeten Aufgaben an den Anrufer zurück, während er auf die asynchrone Aufgabe wartet. Wenn die Aufgabe abgeschlossen ist, soll der verbleibende Code in der Methode geplant werden, um befolgt zu werden.
tote Lock -Szene await
im Beispielcode blockiert die
aufruft, und die await
-Methode ruft die asynchrone Methode
auf, um eine Reihe asynchroner Operationen zu erstellen. Dies verhinderte effektiv daran, die Aufgabe von Threads zu erledigen und freizusetzen. Infolgedessen wird die -Methode niemals beendet, was zu toten Schlössern führt. Die Obstruktionsoperation im asynchronen Code
Get
Es wird normalerweise nicht empfohlen, Obstruktion im asynchronen Code zu verwenden. Wenn die Blockierung auftritt, kann der Faden die Einlassanforderung nicht verarbeiten, was zu einem Leistungsrückgang führt und möglicherweise ein abgestimmter Schloss sein kann. Task.WaitAll
Ros
Schlussfolgerung Foo
Bar
Der Unterschied zwischen Get
Verständnis und
Es sollte nur in bestimmten Szenen verwendet werden, die synchronisiert werden müssen. In den meisten Fällen wird empfohlen, eine "vollständige asynchrone" Methode zu verwenden, um asynchron zu erhalten und Blockierungsprobleme im gesamten Code zu verhindern.
Das obige ist der detaillierte Inhalt vonWarten Sie gegen Task.wait: Wann schafft synchrones Blockieren einen Deadlock?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!