Rumah > pembangunan bahagian belakang > Golang > Bilakah Penjadual Go Mencipta M dan P Baharu?

Bilakah Penjadual Go Mencipta M dan P Baharu?

Mary-Kate Olsen
Lepaskan: 2024-10-29 18:39:43
asal
474 orang telah melayarinya

When Does the Go Scheduler Create New M and P?

Apabila Go Scheduler Mencipta M dan P Baharu

Dalam masa jalan Go, goroutine, urutan sistem pengendalian (benang OS) dan konteks/ pemproses (M dan P) bekerjasama untuk menguruskan concurrency. Memahami apabila entiti M dan P baharu dicipta adalah penting untuk prestasi yang cekap.

Penciptaan M dan P

  • M (Mesin): M mewakili urutan OS dan dicipta apabila goroutine dijadualkan untuk dijalankan. Bilangan M pada mulanya ditetapkan oleh masa jalan. Pembolehubah persekitaran GOMAXPROCS.
  • P (Pemproses): A P ialah pemproses yang melaksanakan goroutine. Setiap P dikaitkan dengan M. Apabila blok M, M baharu boleh dibuat untuk melaksanakan gorout pada P tersebut.

Analisis Senario

Dalam contoh kod anda, anda mencipta berbilang goroutine yang melakukan operasi menyekat. Dalam senario ini:

  1. Kumpulan pertama goroutin akan dijadualkan pada kejadian P sedia ada.
  2. Jika semua baris gilir tempatan P penuh, M baharu akan dibuat untuk mengendalikan limpahan goroutines.
  3. Walau bagaimanapun, memandangkan gorouti anda melakukan operasi menyekat dalam go func(), M yang dikaitkan dengan gorouti yang disekat akan dialih keluar daripada P dan diletakkan pada kumpulan benang terbiar.
  4. Baharu M akan dibuat untuk menggantikan M yang disekat dan terus melaksanakan goroutine pada P itu.

Kesimpulan

Ringkasnya, penjadual Go mencipta M baharu apabila goroutine dijadualkan untuk dijalankan dan urutan OS percuma tidak tersedia. P baharu dicipta apabila baris gilir tempatan bagi P sedia ada penuh. Walau bagaimanapun, dalam kes menyekat goroutines, bilangan M yang dicipta boleh melebihi bilangan teras maya, kerana setiap operasi menyekat memerlukan M yang berasingan.

Sumber Tambahan

  • [GOMAXPROCS dalam Blog Go](https://blog.golang.org/GOMAXPROCS)
  • [Go Goroutine, Thread OS dan Pengurusan CPU](https://godoc.org/ runtime/debug#SetMaxThreads)
  • [Asas GMP](https://www.programmersought.com/article/79557885527/)

Atas ialah kandungan terperinci Bilakah Penjadual Go Mencipta M dan P Baharu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan