Heim >Backend-Entwicklung >C++ >Wie wirken sich unterschiedliche Async/Await-Muster auf die Ausführungszeit in C# aus?

Wie wirken sich unterschiedliche Async/Await-Muster auf die Ausführungszeit in C# aus?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-12 13:28:42442Durchsuche

How Do Different Async/Await Patterns Impact Execution Time in C#?

Wie wirken sich verschiedene Async/Await-Modi in C# auf die Ausführungszeit aus?

Asynchrones Warten: Warten und Nicht-Warten (nach dem Start ignoriert)

Detaillierte Code-Erklärung

Bedenken Sie den folgenden Code:

<code class="language-csharp">static async Task Callee()
{
    await Task.Delay(1000);
}

static async Task Caller()
{
    Callee(); // #1 启动后忽略
    await Callee(); // #2 >1s
    Task.Run(() => Callee()); // #3 启动后忽略
    await Task.Run(() => Callee()); // #4 >1s
    Task.Run(async () => await Callee()); // #5 启动后忽略
    await Task.Run(async () => await Callee()); // #6 >1s
}

static void Main(string[] args)
{
    var stopWatch = new Stopwatch();
    stopWatch.Start();
    Caller().Wait();
    stopWatch.Stop();
    Console.WriteLine($"Elapsed: {stopWatch.ElapsedMilliseconds}");
    Console.ReadKey();
}</code>

Aufruflogik

#1: Der einfachste Weg, ihn nach dem Start zu ignorieren. #2: Einfach warten. #3: Starten Sie eine asynchrone Methode für einen Thread-Pool-Thread und ignorieren Sie das Ergebnis. #4: Starten Sie eine asynchrone Methode in einem Thread-Pool-Thread und warten Sie asynchron auf deren Abschluss. #5: Gleich wie #3. #6: Gleich wie #4.

Task.Run und asynchrone Lambda-Ausdrücke

Obwohl Task.Run einen neuen Thread startet, entspricht Task.Run(async => ...) Task.Factory.StartNew(async => ...), das im Thread erstellt wird pool Eine neue Aufgabe und starte sie sofort.

Hinweise, die nach dem Start ignoriert werden sollten

Es ist wichtig zu beachten, dass Methoden, die nach dem Start ignoriert werden, zu unbehandelten Ausnahmen führen können, die zum Absturz der Anwendung führen können. Daher ist es wichtig, die Auswirkungen vor der Verwendung sorgfältig abzuwägen.

Das obige ist der detaillierte Inhalt vonWie wirken sich unterschiedliche Async/Await-Muster auf die Ausführungszeit in C# aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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