Rumah > pembangunan bahagian belakang > C++ > Task.Start/Wait vs. Async/Await: Apakah Perbezaan Utama dalam Pengaturcaraan Asynchronous?

Task.Start/Wait vs. Async/Await: Apakah Perbezaan Utama dalam Pengaturcaraan Asynchronous?

Mary-Kate Olsen
Lepaskan: 2025-01-10 22:23:46
asal
423 orang telah melayarinya

Task.Start/Wait vs. Async/Await: What's the Key Difference in Asynchronous Programming?

Task.Start/Wait vs. Async/Await: Apakah perbezaannya?

Dalam dunia pengaturcaraan tak segerak, adalah penting untuk memahami perbezaan antara kaedah segerak menggunakan Task.Start/Wait dan kaedah tak segerak menggunakan Async/Await.

Sila lihat coretan kod berikut:

public void MyMethod()
{
  Task t = Task.Factory.StartNew(DoSomethingThatTakesTime);
  t.Wait();
  UpdateLabelToSayItsComplete();
}

public async void MyMethod()
{
  var result = Task.Factory.StartNew(DoSomethingThatTakesTime);
  await result;
  UpdateLabelToSayItsComplete();
}
Salin selepas log masuk

Dalam coretan kod pertama, kami menggunakan kaedah penyegerakan Task.Mula/Tunggu tradisional. Begini cara ia berfungsi:

  • Gunakan Task.Factory.StartNew untuk mencipta tugasan baharu dan melaksanakan operasi yang memakan masa dalam kaedah DoSomethingThatTakesTime.
  • Sekat urutan semasa dengan memanggil kaedah Tunggu() pada tugasan. Ini bermakna program akan menunggu sehingga tugasan selesai.

Sebaliknya, coretan kod kedua menunjukkan pendekatan tak segerak menggunakan Async/Await:

  • Sekali lagi, mulakan tugasan seperti sebelumnya.
  • Tetapi bukannya menggunakan Wait() untuk menyekat urutan, ia menggunakan kata kunci await. Ini menyebabkan utas semasa terus melaksanakan semasa tugas latar belakang sedang berjalan.
  • Apabila tugasan selesai, mesej akan dibariskan secara automatik ke dalam baris gilir mesej, yang menunjukkan bahawa bahagian kod berikut menunggu harus menyambung semula pelaksanaan.

Perbezaan utama antara kedua-dua kaedah ini ialah kelakuan benang semasa tugasan sedang dijalankan. Dengan Task.Start/Tunggu, urutan disekat dan tidak boleh bertindak balas kepada acara lain. Sebaliknya, Async/Await membenarkan urutan untuk melaksanakan tugas lain sambil menunggu jawapan.

Bayangkan memesan makan tengah hari di restoran. Gunakan Task.Mula/Tunggu seperti mengabaikan orang yang duduk di sebelah anda sebelum anda makan. Menggunakan Async/Await, ia seperti meneruskan perbualan dengan rakan sementara anda menunggu sup dihidangkan. Kerja latar belakang masih berlaku, tetapi urutan anda boleh melakukan operasi lain sementara menunggu keputusan.

Atas ialah kandungan terperinci Task.Start/Wait vs. Async/Await: Apakah Perbezaan Utama dalam Pengaturcaraan Asynchronous?. 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