Rumah >pembangunan bahagian belakang >C++ >Adakah `Task.getAwaiter ().

Adakah `Task.getAwaiter ().

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-24 11:47:09107semak imbas

Is `Task.GetAwaiter().GetResult()` a Better Alternative to `Task.Result` for Synchronous Blocking?

Adakah ia bersamaan dengan ? Task.GetAwaiter().GetResult() Task.Result Dalam pengaturcaraan asynchronous, kadang -kadang kaedah asynchronous diperlukan untuk melakukan serentak. Satu kaedah adalah menggunakan , tetapi ini boleh menyebabkan keletihan kunci mati dan sumber kolam benang. Walau bagaimanapun, ia dianggap lebih baik daripada dan , kerana ia menyebarkan keabnormalan secara langsung, dan bukannya membungkusnya dalam

.

Task.GetAwaiter().GetResult() Task.Wait , Task.Result dan AggregateException perbezaan

dan Task.GetAwaiter().GetResult() secara automatik akan membungkus pembungkusan yang tidak normal dalam Task.Wait, ini untuk mengekalkan keserasian dengan versi bingkai awal. Sebaliknya, secara langsung menyebarkan keabnormalan dan mengelakkan masalah pembungkusan. Task.Result

Kelebihan

Task.Wait Task.Result Pasukan Microsoft PFX berkata AggregateException membolehkan pemaju mengakses logik komunikasi yang tidak normal yang digunakan oleh pengendali Task.GetAwaiter().GetResult(). Ini sangat berguna di tempat kejadian yang perlu dikekalkan tanpa pembungkusan.

Pakar Stephen Cleary terus menekankan kejelasan . Beliau menjelaskan bahawa ia jelas menyatakan pemeriksaan yang salah dan mencadangkan untuk menggunakannya sebagai kaedah pilihan untuk halangan segerak dalam keadaan tertentu. Task.GetAwaiter().GetResult() amaran:

task.GetAwaiter().GetResult() walaupun mempunyai kelebihan yang jelas, ia harus mengelakkan bergantung pada itu, await, dan

, tetapi harus lebih disukai menggunakan kaedah "async/menunggu" yang lebih sesuai dan tidak membawa kepada kunci yang mati . Kaedah ini hanya boleh digunakan dalam keadaan khas.

Atas ialah kandungan terperinci Adakah `Task.getAwaiter ().. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn