pengaturcaraan asynchronous dan multi -threading: perbezaan utama
pengaturcaraan asynchronous dan multi -threads sering dikelirukan, tetapi mereka adalah konsep yang sama sekali berbeza.
pengaturcaraan asynchronous
Inti pengaturcaraan tak segerak adalah operasi non -blocking
. Apabila menghadapi ekspresi "menanti" dalam kaedah tak segerak, ia tidak akan menghalang pelaksanaan thread untuk menunggu tugas selesai. Sebaliknya, ia akan mendaftarkan bahagian yang tersisa kaedah ke dalam kesinambungan dan membayar kawalan hak kawalan kepada pemanggil kaedah tak segerak.Adalah penting bahawa kaedah asynchronous tidak perlu membuat benang tambahan
. Kerana kaedah asynchronous berjalan dalam konteks penyegerakan semasa, hanya masa thread digunakan semasa aktiviti. "Task.run" boleh menyahpasang kerja padat CPU ke benang latar belakang, tetapi ini tidak sah untuk proses hanya menunggu hasilnya.multi -thread
Multi -Threads melibatkan peruntukan tugas kepada pelbagai benang kerja. Setiap pemproses mengendalikan tugas tugasan secara bebas. Menyelaras benang kerja ini untuk mencegah konflik sumber dan memastikan pampasan yang sesuai meningkatkan kerumitan. metafora mudah
Contoh restoran dapat membantu memahami perbezaan antara kedua -dua:
segerak:
goreng telur terlebih dahulu, kemudian bakar roti.single -threading:
Pertimbangkan contoh Jon Skeet:
Apabila menelefon , ia akan mencetuskan operasi tak segerak tanpa menyekat benang panggilan.
Daftar kaedah selebihnya sebagai kesinambungan, dan laksanakan apabila panjang laman web tersedia. Apabila beroperasi di sini, pemanggil boleh terus melaksanakan tugas lain.
Selepas siap, pelaksanaan berterusan, dan teks label ditetapkan dengan panjang laman web.
<code class="language-c#">async void DisplayWebsiteLength ( object sender, EventArgs e ) { label.Text = "Fetching ..."; using ( HttpClient client = new HttpClient() ) { Task<string> task = client.GetStringAsync("http://csharpindepth.com"); string text = await task; label.Text = text.Length.ToString(); } }</code>
Atas ialah kandungan terperinci Pengaturcaraan Asynchronous vs Multithreading: Apa Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!