Baru belajar model GMP golang dan sekarang saya faham bagaimana goroutine, utas sistem pengendalian dan konteks/pemproses golang bekerjasama antara satu sama lain. Tetapi saya masih tidak faham bila M dan P akan dijana?
Sebagai contoh, saya mempunyai kod ujian untuk menjalankan beberapa operasi pada pangkalan data, dan terdapat dua kes ujian (dua kelompok goroutine):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
Dari pemahaman saya, jika M dicipta apabila diperlukan. Dalam kumpulan pertama goroutine, 8 (bilangan teras maya pada mesin saya) utas sistem pengendalian akan dibuat, kumpulan kedua hanya akan menggunakan semula 8 utas sistem pengendalian ini tanpa membuat utas baharu. Adakah ini betul?
Kami akan berterima kasih jika anda dapat menyediakan lebih banyak bahan atau blog mengenai topik ini.
M boleh digunakan semula hanya jika proses anda tidak disekat atau tidak mempunyai sebarang panggilan sistem. Dalam kes anda, anda mempunyai tugas menyekat dalam go func()
. Oleh itu, bilangan M tidak terhad kepada 8 (bilangan teras maya pada mesin saya). Kumpulan pertama akan menyekat dan mengalih keluar dari P dan menunggu proses penyekatan selesai sementara M baharu dicipta dikaitkan dengan P.
Lihat di bawah untuk butiran lanjut,
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!