Memahami Penciptaan M dan P dalam Penjadual Go
Penjadual Go beroperasi pada model yang melibatkan goroutine, utas OS (M) dan konteks /pemproses (P). Untuk mengoptimumkan prestasi, penjadual mengurus penciptaan dan penggunaan M dan P secara dinamik.
Penciptaan M
M dicipta apabila penjadual mengesan keperluan untuk melaksanakan penyekatan tugasan. Dalam kod contoh anda, gorouti melakukan operasi pangkalan data menyekat, yang akan mencetuskan penciptaan M tambahan. Bilangan tepat M yang dicipta bergantung pada bilangan gorouti yang disekat dan sumber sistem yang tersedia.
Penciptaan daripada P
P dicipta apabila goroutine baharu dilancarkan. Walau bagaimanapun, penjadual tidak mencipta P baharu untuk setiap goroutine. Sebaliknya, ia menggunakan semula kejadian P sedia ada, mengekalkan nombor tetap P bersamaan dengan nilai GOMAXPROCS, biasanya ditetapkan kepada bilangan CPU yang tersedia.
Dalam Kod Contoh Anda
Dalam kod ujian anda, anda mencipta 50 goroutine dalam dua kelompok. Memandangkan operasi pangkalan data sedang menyekat, M akan dibuat mengikut keperluan untuk mengendalikan goroutin penyekat. Walau bagaimanapun, kerana tika P digunakan semula, hanya 8 P akan dibuat, mewakili bilangan teras maya pada sistem anda.
Lebih Banyak Sumber
Untuk penerokaan lanjut mengenai perkara ini topik, rujuk sumber ini:
Atas ialah kandungan terperinci Bagaimanakah penjadual Go menguruskan penciptaan M dan P dengan kehadiran operasi menyekat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!