Membezakan Goroutine, Benang Pengguna dan Benang Kernel
Pengenalan
Konsep gorouti , utas pengguna dan utas kernel boleh mengelirukan apabila meneroka selok-belok model konkurensi Go. Artikel ini bertujuan untuk menjelaskan konsep ini dan menangani soalan berkaitan.
Soalan 1: Mentakrifkan Benang OS dan Goroutine
Soalan:
- Pengenalan "Effective Go" menyebut goroutine. Apakah yang dimaksudkan dengan "benang os"? Adakah ia benang pengguna atau kernel?
Jawapan:
- "benang OS" merujuk kepada benang kernel.
Soalan 2: Memahami P dan G dalam Perjalanan Penjadual
Soalan:
- Mengapakah bilangan P (pemproses/konteks penjadualan) sama dengan bilangan teras CPU?
- Jika semua CPU menyediakan program Go, apakah yang berlaku kepada program lain dalam OS yang memerlukan CPU peruntukan?
Jawapan:
- P berfungsi sebagai lapisan pemetaan antara goroutine dan benang kernel. Terdapat satu P setiap utas kernel.
- Atur cara Go boleh memperuntukkan semua teras CPU yang tersedia secara lalai (GOMAXPROCS), tetapi ini tidak menghalang proses OS lain daripada dilaksanakan. Walaupun dengan operasi serentak, proses menghabiskan banyak masa menunggu operasi I/O, membenarkan penjadual kernel memperuntukkan masa CPU kepada program lain.
Soalan 3: Bilangan Benang Kernel Dijana
Soalan:
- Berapa banyak utas kernel yang dijana oleh sistem OS?
Jawapan:
- Bilangan benang kernel yang dicipta oleh OS adalah dinamik dan bergantung pada beban sistem.
Atas ialah kandungan terperinci Goroutine, Benang Pengguna dan Benang Kernel: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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