Rumah >pembangunan bahagian belakang >C++ >Api dan Lupakan lwn. Menunggu dalam Async/Await: Apakah Perbezaannya dan Bilakah Anda Perlu Menggunakan Setiap?

Api dan Lupakan lwn. Menunggu dalam Async/Await: Apakah Perbezaannya dan Bilakah Anda Perlu Menggunakan Setiap?

Barbara Streisand
Barbara Streisandasal
2025-01-12 13:17:42941semak imbas

Fire and Forget vs. Awaiting in Async/Await: What's the Difference and When Should You Use Each?

Aktifkan dan Lupakan dan Menunggu dalam Async/Await: Perbezaan dan senario penggunaan

Kod berikut menunjukkan cara yang berbeza untuk memanggil kaedah Callee dan perbezaan tingkah laku mereka.

Panggilan #1: Api dan Lupakan (Mudah)

Callee Kaedah ini dipanggil secara tak segerak dan tidak menyekat pemanggil.

Panggilan #2: Menunggu tugas (kelewatan)

Kaedah

Callee menggunakan kata kunci await dan pemanggil menunggu sehingga selesai. Memandangkan kaedah Callee mengandungi kelewatan 1000ms, ia akan mengambil masa lebih daripada satu saat untuk pemanggil.

Panggilan #3 & #5: Tugas. Jalankan(Tembak dan Lupakan)

Task.Run Menyerahkan kaedah Callee ke kumpulan benang untuk dilaksanakan. Memandangkan await tidak digunakan, kedua-dua panggilan adalah Fire dan Forget dan jangan sekat pemanggil.

Panggil #4 & #6: Tugas. Jalankan(Tunggu tugasan)

Serupa dengan #3 dan #5, tetapi Task.Run menggunakan await secara dalaman. Ini menjadikan mereka bersamaan dengan #2, pemanggil akan menunggu tugasan selesai.

Perbezaan antara #3 dan #5

Walaupun #3 dan #5 kedua-duanya menggunakan Task.Run, terdapat perbezaan yang ketara. Dalam #3, Callee dipanggil terus untuk membuat tugasan baharu pada kumpulan benang. Dalam #5, Callee dibalut dengan ungkapan lambda async, yang mencipta tugasan baharu dengan mesin keadaannya sendiri. Walau bagaimanapun, memandangkan kedua-dua misi adalah Fire dan Forget, perbezaannya tidak ketara dalam kes ini.

Nota mengenai Fabrik Servis

Selepas berhijrah ke Fabrik Perkhidmatan, HostingEnvironment.QueueBackgroundWorkItem tidak lagi disokong. Walaupun boleh menggunakan Task.Run sebagai alternatif, adalah lebih baik untuk menggunakan proses latar belakang yang berasingan dan berkomunikasi dengannya melalui baris gilir. Ini memastikan pengasingan antara perkhidmatan bahagian hadapan dan bahagian belakang, mengelakkan masalah prestasi atau kebuntuan.

Atas ialah kandungan terperinci Api dan Lupakan lwn. Menunggu dalam Async/Await: Apakah Perbezaannya dan Bilakah Anda Perlu Menggunakan Setiap?. 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