Heim > Backend-Entwicklung > C++ > Warte Task.run (): Was ist der Unterschied zwischen `Await task.run (); return; `und` return task.run () `?

Warte Task.run (): Was ist der Unterschied zwischen `Await task.run (); return; `und` return task.run () `?

DDD
Freigeben: 2025-01-30 03:46:10
Original
242 Leute haben es durchsucht

Await Task.Run(): What's the Difference Between `await Task.Run(); return;` and `return Task.Run()`?

Asynchroner Operation:

Der subtile Unterschied zwischen und await Task.Run(); return; return Task.Run()

Auf den ersten Blick scheinen diese beiden Code sehr ähnlich zu sein:

<code class="language-csharp">async Task TestAsync() 
{
    await Task.Run(() => DoSomeWork());
    return;
}</code>
Nach dem Login kopieren
<code class="language-csharp">Task TestAsync() 
{
    return Task.Run(() => DoSomeWork());
}</code>
Nach dem Login kopieren
Obwohl beide

asynchrone Aufgaben verwenden, gibt es subtile und wichtige Unterschiede in ihrem Verhalten. Task.Run()

abnormale Kommunikation

Der Hauptunterschied ist eine abnormale Behandlung. Im ersten Beispiel wird die Verwendung von

und

erfasst und ausgeworfen, wenn die asynchrone Methode später auf die asynchrone Methode wartet. Dies ermöglicht dem Anrufer, elegant Abnormalitäten zu bewältigen. await DoSomeWork() im Gegenteil, im zweiten Beispiel von

wird sich jede Ausnahme sofort ausbreiten, und die Ausführung der Anrufmethode kann unterbrochen werden. Dies kann zu unerwarteten Verhaltensweisen führen und eine abnormale Behandlung schwierig machen.

await Synchron oben

Ein weiterer Unterschied hängt mit dem synchronen Kontext zusammen. Im Beispiel wird die Operation in im synchronen Kontext des aufrufenden Threads ausgeführt. Stattdessen arbeitet im Beispiel im Kontext verschiedener Threadpools.

Dead Lock await DoSomeWork() return Task.Run() Bei der Ausführung asynchroner Operationen in der GUI -Anwendung mit nicht -defauter Synchronisationskontext tritt die

-Methode wahrscheinlicher auf. Wenn Sie beispielsweise asynchrone Operationen beginnen und

aus dem UI -Thread verwenden, kann ein Deadlock auftreten. Zusammenfassung

await Die Ergebnisse dieser beiden Codefragmente sind unterschiedlich, hauptsächlich weil sie sich von der Verwendung von Anomalien und der Verwendung von await unterscheiden. Bei asynchronen Operationen kann die Verwendung von eine abnormale Verbreitung besser steuern und sicherstellen, dass sie im richtigen Synchronisationskontext korrekt implementiert wird.

Das obige ist der detaillierte Inhalt vonWarte Task.run (): Was ist der Unterschied zwischen `Await task.run (); return; `und` return task.run () `?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage