Rumah > pembangunan bahagian belakang > C++ > Tugasan.Mula/Tunggu lwn. Async/Tunggu: Apakah Perbezaan dalam Mengendalikan Operasi Jangka Panjang?

Tugasan.Mula/Tunggu lwn. Async/Tunggu: Apakah Perbezaan dalam Mengendalikan Operasi Jangka Panjang?

Barbara Streisand
Lepaskan: 2025-01-10 22:36:41
asal
336 orang telah melayarinya

Task.Start/Wait vs. Async/Await:  What's the Difference in Handling Long-Running Operations?

Task.Start/Wait vs. Async/Await: Perbezaan dalam mengendalikan operasi yang memakan masa

Dalam dunia pengaturcaraan berbilang benang dan tak segerak, adalah penting untuk memahami perbezaan antara kaedah Task.Start/Tunggu dan async/tunggu. Kedua-dua teknologi ini menyediakan mekanisme yang berbeza untuk mengendalikan operasi yang memakan masa, dengan itu meningkatkan responsif dan prestasi aplikasi.

Tugas.Mula/Tunggu: penyekatan segerak

Dalam kaedah Task.Start/Wait, gunakan Task.Factory.StartNew(Action) untuk mencipta tugasan baharu dan tetapkan tugas itu sebagai perwakilan untuk melaksanakan operasi yang memakan masa. Panggilan t.Wait() kemudian memaksa urutan panggilan untuk menunggu sehingga tugas menyelesaikan pelaksanaan.

Pertimbangkan coretan kod berikut:

<code class="language-csharp">public void MyMethod()
{
  Task t = Task.Factory.StartNew(DoSomethingThatTakesTime);
  t.Wait();
  UpdateLabelToSayItsComplete();
}</code>
Salin selepas log masuk

Dalam contoh ini, utas panggilan akan melaksanakan kaedah UpdateLabelToSayItsComplete() hanya selepas operasi DoSomethingThatTakesTime() selesai. Kaedah ini menyekat pemprosesan pada utas panggilan, dengan itu melambatkan pelaksanaan tugas lain.

Async/Await: tak segerak tidak menyekat

Sebaliknya, kaedah async/tunggu menggunakan pengaturcaraan tak segerak untuk melaksanakan operasi yang memakan masa tanpa menyekat urutan panggilan. Kata kunci async void membenarkan kaedah tidak segerak, di mana pengendali menunggu menyerahkan kawalan kepada pemanggil sehingga tugas selesai.

Berikut ialah coretan kod yang dikemas kini menggunakan async/menunggu:

<code class="language-csharp">public async void MyMethod()
{
  var result = Task.Factory.StartNew(DoSomethingThatTakesTime);
  await result;
  UpdateLabelToSayItsComplete();
}</code>
Salin selepas log masuk

Dalam kes ini, pernyataan keputusan menunggu menggantung pelaksanaan kaedah MyMethod() sehingga tugas DoSomethingThatTakesTime() selesai. Pada masa yang sama, utas panggilan bebas untuk melaksanakan tugas lain.

Perbezaan pemahaman dengan analogi

Bayangkan senario restoran: anda memesan daripada pelayan dan kemudian memilih untuk mengabaikan rakan anda sehingga sup tiba (Tugas.Tunggu), atau bercakap dengan rakan anda dan minta pelayan menghantar sup semasa sembang dijeda (async/ menunggu).

Atas ialah kandungan terperinci Tugasan.Mula/Tunggu lwn. Async/Tunggu: Apakah Perbezaan dalam Mengendalikan Operasi Jangka Panjang?. 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