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
353 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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan