Rumah >pembangunan bahagian belakang >C++ >Menunggu tugas.run (); kembali; vs task.run (): Apakah perbezaan penting dalam pengaturcaraan async?
Perbezaan utama antara
dan dalam pengaturcaraan asynchronous await Task.Run(); return;
return Task.Run();
Dalam pengaturcaraan asynchronous, memahami perbezaan antara
sangat penting. Walaupun kedua -dua struktur ini kelihatan sama, tingkah laku mereka pada dasarnya berbeza: await Task.Run();
return Task.Run();
Disposure:
Perbezaan yang signifikan ialah penyebaran yang tidak normal. Keabnormalan yang dibuang dalam kaedah Asynchronous disimpan dalam objek
yang dikembalikan, dan keadaan diperhatikan sebelum tugas diperhatikan. Sebaliknya, dalam kaedah bukan , apa -apa kelainan membuang akan segera dicetuskan pada benang yang sama, menjadikannya lebih mudah untuk ditangkap.
Persepsi konteks segar: Task
Task
Task
Asynchronous Kaedah pada dasarnya melihat konteks penyegerakan semasa. Apabila menghadapi pernyataan , operasi akan diatur dalam konteks semasa untuk memastikan bahawa sebarang operasi yang berkaitan dengan UI dilakukan pada benang UI. Walau bagaimanapun, kaedah bukan -asynchronous tidak mempunyai persepsi sedemikian, yang boleh menyebabkan masalah penyegerakan.
kemungkinan kunci mati:
Dalam beberapa kes, memanggil dalam benang UI boleh menyebabkan kebuntuan. Ini kerana benang disekat dan menunggu Task
diselesaikan, dengan itu berkesan menghalang UI daripada mengemas kini. await
Elakkan masalah ini dengan menjalankan tugas. Task
dan
kod yang dihasilkan. Bekas menghasilkan keadaan tak segerak, sementara yang terakhir mencipta objek. Mesin Negeri Asynchronous membolehkan kaedah untuk menggantung dan pulih selepas tugas selesai. await Task.Run()
Singkatnya, walaupun dan Task
mungkin mempunyai persamaan dalam tatabahasa, perbezaan tingkah laku mereka adalah penting. Apabila memilih antara kedua -duanya, pertimbangkan kemungkinan penyebaran yang tidak normal, persepsi konteks segerak dan kebuntuan. return Task.Run()
Atas ialah kandungan terperinci Menunggu tugas.run (); kembali; vs task.run (): Apakah perbezaan penting dalam pengaturcaraan async?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!