Heim > Backend-Entwicklung > C++ > Task.Start/Wait vs. Async/Await: Was ist der Hauptunterschied in der asynchronen Programmierung?

Task.Start/Wait vs. Async/Await: Was ist der Hauptunterschied in der asynchronen Programmierung?

Mary-Kate Olsen
Freigeben: 2025-01-10 22:23:46
Original
336 Leute haben es durchsucht

Task.Start/Wait vs. Async/Await: What's the Key Difference in Asynchronous Programming?

Task.Start/Wait vs. Async/Await: Was ist der Unterschied?

In der Welt der asynchronen Programmierung ist es wichtig, den Unterschied zwischen synchronen Methoden mit Task.Start/Wait und asynchronen Methoden mit Async/Await zu verstehen.

Bitte sehen Sie sich den folgenden Codeausschnitt an:

<code class="language-csharp">public void MyMethod()
{
  Task t = Task.Factory.StartNew(DoSomethingThatTakesTime);
  t.Wait();
  UpdateLabelToSayItsComplete();
}

public async void MyMethod()
{
  var result = Task.Factory.StartNew(DoSomethingThatTakesTime);
  await result;
  UpdateLabelToSayItsComplete();
}</code>
Nach dem Login kopieren

Im ersten Codeausschnitt verwenden wir die traditionelle Synchronisierungsmethode Task.Start/Wait. So funktioniert es:

  • Verwenden Sie Task.Factory.StartNew, um eine neue Aufgabe zu erstellen und zeitaufwändige Vorgänge in der DoSomethingThatTakesTime-Methode auszuführen.
  • Blockieren Sie den aktuellen Thread, indem Sie die Wait()-Methode für die Aufgabe aufrufen. Das bedeutet, dass das Programm wartet, bis die Aufgabe abgeschlossen ist.

Im Gegensatz dazu demonstriert der zweite Codeausschnitt einen asynchronen Ansatz mit Async/Await:

  • Starten Sie erneut eine Aufgabe wie zuvor.
  • Aber statt Wait() zum Blockieren des Threads zu verwenden, wird das Schlüsselwort „await“ verwendet. Dadurch wird die Ausführung des aktuellen Threads fortgesetzt, während die Hintergrundaufgabe ausgeführt wird.
  • Wenn die Aufgabe abgeschlossen ist, wird automatisch eine Nachricht in die Nachrichtenwarteschlange eingereiht, die darauf hinweist, dass der Codeabschnitt nach „await“ mit der Ausführung fortfahren soll.

Der Hauptunterschied zwischen diesen beiden Methoden ist das Verhalten des Threads während der Ausführung der Aufgabe. Bei Task.Start/Wait wird der Thread blockiert und kann nicht auf andere Ereignisse reagieren. Im Gegensatz dazu ermöglicht Async/Await einem Thread, andere Aufgaben auszuführen, während er auf eine Antwort wartet.

Stellen Sie sich vor, Sie bestellen ein Mittagessen in einem Restaurant. Verwenden Sie Task.Start/Wait, als würden Sie die Person, die neben Ihnen sitzt, ignorieren, bevor Sie essen. Wenn Sie Async/Await verwenden, ist es, als würden Sie ein Gespräch mit einem Freund fortsetzen, während Sie darauf warten, dass die Suppe serviert wird. Die Hintergrundarbeit läuft noch, aber Ihr Thread kann andere Vorgänge ausführen, während er auf Ergebnisse wartet.

Das obige ist der detaillierte Inhalt vonTask.Start/Wait vs. Async/Await: Was ist der Hauptunterschied in der asynchronen Programmierung?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage