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
335 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:

<code class="language-csharp">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();
}</code>
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!

sumber:php.cn
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