Tunggu (), akan menyebabkan kode async berpotensi dijalankan secara sinkron. menunggu tidak akan.
Misalnya, Anda memiliki aplikasi web asp.net. Panggilan pengguna / getUser / 1 titik akhir. kumpulan aplikasi asp.net akan memilih utas dari utas (Thread1) dan, utas ini akan melakukan panggilan http. Jika Anda Tunggu (), utas ini akan diblokir sampai panggilan http diselesaikan. Saat sedang menunggu, jika UserB memanggil / getUser / 2, maka, kumpulan aplikasi perlu melayani utas lainnya (Thread2) untuk membuat panggilan http lagi. Anda baru saja membuat (Sebenarnya, diambil dari kumpulan aplikasi) utas lainnya tanpa alasan, karena Anda tidak dapat menggunakan Thread1 karena diblokir oleh Tunggu ().
Jika Anda menggunakan menunggu di Thread1, maka, SyncContext akan mengelola sinkronisasi antara panggilan Thread1 dan http. Cukup, ini akan memberi tahu setelah panggilan http selesai. Sementara itu, jika UserB melakukan panggilan / getUser / 2, maka, Anda akan menggunakan Thread1 lagi untuk melakukan panggilan http, karena itu dirilis setelah menunggu ditabrak. Kemudian permintaan lain dapat menggunakannya, bahkan lebih jauh lagi. Setelah panggilan http selesai (user1 atau user2), Thread1 bisa mendapatkan hasilnya dan kembali ke pemanggil (klien). Thread1 digunakan untuk banyak tugas.
Task
10 ms akan benar-benar mengeksekusi 10 jamTask
di utas Anda, sehingga menghalangi Anda selama 10 jam penuh?