Rumah >pembangunan bahagian belakang >C++ >Tugasan.Mula/Tunggu lwn. Async/Tunggu: Apakah Perbezaan dalam Mengendalikan Operasi Jangka Panjang?
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>
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>
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!