async dan menunggu: membongkar pengaturcaraan asynchronous
Pengaturcaraan moden sangat bergantung pada operasi asynchronous menggunakan dan async
. Walaupun meningkatkan kebolehbacaan kod, kata kunci ini memperkenalkan kerumitan yang sering memerlukan penjelasan lanjut. Kesalahpahaman umum ialah await
dan async
membuat benang latar belakang baru untuk proses yang panjang. await
dan async
menguruskan tugas -tugas asynchronous, tetapi mereka tidak langsung menanam benang. Sebaliknya, mereka menggunakan pendekatan yang berbeza. Pengkompil menghasilkan mesin negeri di belakang tabir apabila ia menemui kaedah await
. async
private async void button1_Click(object sender, EventArgs e) { Task<int> access = DoSomethingAsync(); // Other independent tasks here int a = 1; // Immediately accessible // Wait for the result of DoSomethingAsync() int x = await access; } async Task<int> DoSomethingAsync() { // Does this run on a background thread? System.Threading.Thread.Sleep(5000); return 1; }
mengarahkan pengkompil untuk berhenti sejenak await
sehingga button1_Click
selesai. Pelaksanaan disambung semula sebaik sahaja tugas selesai, yang membolehkan akses segera ke DoSomethingAsync
. a
tidak berjalan pada benang latar belakang yang berdedikasi. Mesin negara pengkompil menjadualkannya secara tidak segerak pada benang thread thread. Ini bermakna persekitaran pelaksanaan DoSomethingAsync
tidak ditentukan; Ia boleh berjalan di mana -mana benang pool thread yang tersedia. DoSomethingAsync
dan async
adalah penting untuk mewujudkan kod asynchronous yang cekap dan berskala. Mekanisme ini membolehkan operasi jangka panjang tanpa menyekat benang utama, yang membawa kepada pengalaman pengguna yang lebih responsif dan cecair. await
Atas ialah kandungan terperinci Adakah `async` dan` menunggu` mencipta benang latar dalam pengaturcaraan tak segerak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!