Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat menanti dengan cekap pelbagai tugas asynchronous dengan pelbagai jenis hasil?

Bagaimanakah saya dapat menanti dengan cekap pelbagai tugas asynchronous dengan pelbagai jenis hasil?

Susan Sarandon
Lepaskan: 2025-01-28 03:16:08
asal
198 orang telah melayarinya

Mengendalikan Berbilang Tugas Tak segerak dengan Pelbagai Jenis Pulangan

Dalam pengaturcaraan tak segerak, anda sering memerlukan hasil beberapa tugasan yang dijalankan serentak, setiap satu berpotensi mengembalikan jenis data yang berbeza. Mari kita ilustrasikan dengan tiga contoh tugasan:

  • FeedCat(): Mengembalikan objek Cat.
  • SellHouse(): Mengembalikan objek House.
  • BuyCar(): Mengembalikan objek Tesla.

Kami memerlukan semua keputusan sebelum meneruskan. Walaupun pelaksanaan berurutan boleh dilakukan, pelaksanaan serentak adalah jauh lebih cekap. Cabarannya terletak pada pengendalian jenis hasil yang pelbagai.

Penyelesaian: Memanfaatkan Task.WhenAll dan Individu Menanti

Penyelesaian melibatkan Task.WhenAll, yang menunggu semua tugasan yang dibekalkan selesai. Selepas selesai, dapatkan keputusan individu menggunakan await:

var catTask = FeedCat();
var houseTask = SellHouse();
var carTask = BuyCar();

await Task.WhenAll(catTask, houseTask, carTask);

var cat = await catTask;
var house = await houseTask;
var car = await carTask;
Salin selepas log masuk

Task.WhenAll mencipta tugasan ibu bapa yang hanya selesai apabila semua tugasan anak (catTask, houseTask, carTask) selesai. Selepas itu, menunggu setiap tugasan kanak-kanak secara individu mendapatkan semula hasil khususnya.

How Can I Efficiently Await Multiple Asynchronous Tasks with Diverse Result Types?

Atas ialah kandungan terperinci Bagaimanakah saya dapat menanti dengan cekap pelbagai tugas asynchronous dengan pelbagai jenis hasil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan