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

Bilakah Penjadual Go Mencipta M dan P Baharu untuk Tugasan Menyekat?

Barbara Streisand
Barbara Streisandasal
2024-11-01 04:52:27940semak imbas

When Does the Go Scheduler Create New M and P for Blocking Tasks?

Apabila Go Scheduler Mencipta M dan P Baharu

Dalam bahasa pengaturcaraan Go, goroutine dilaksanakan oleh gabungan sistem pengendalian ( OS), pemproses goroutine (P) dan sumber mesin (M). Walaupun penting untuk memahami cara komponen ini berinteraksi, adalah sukar untuk menentukan masa M dan P baharu dicipta.

Memahami Penciptaan M dan P

M adalah singkatan untuk mesin, dan ia mewakili benang OS ringan yang melaksanakan goroutin. P, sebaliknya, bermaksud pemproses dan menguruskan pelaksanaan goroutin pada M tertentu. Penjadual Go mencipta M baharu seperti yang diperlukan untuk mengendalikan gorouti.

Sekiranya Tugasan Menyekat

Dalam contoh anda, anda telah menentukan fungsi ujian yang menghasilkan berbilang goroutine untuk melaksanakan operasi pangkalan data. Setiap goroutine direka bentuk untuk menyekat untuk tempoh tertentu, mensimulasikan senario di mana goroutine tidak dilaksanakan secara aktif. Dalam kes ini, penjadual Go tidak akan mencipta M tambahan kerana M sedia ada boleh mengendalikan goroutin penyekat tanpa gangguan.

Walau bagaimanapun, jika goroutine melakukan panggilan sistem atau menghadapi operasi menyekat, M yang melaksanakan goroutine itu akan menyekat buat sementara waktu. Untuk mengekalkan responsif, penjadual akan mencipta M baharu dan menetapkannya kepada P baharu untuk melaksanakan sebarang goroutine yang belum selesai.

Perhubungan M dan P

Penting untuk diperhatikan bahawa terdapat hubungan 1:1 antara M dan P. M tunggal hanya boleh berjalan pada satu P pada satu masa, dan sebaliknya. Apabila M menyekat, penjadual akan mencari P terbiar. Jika tiada P terbiar tersedia, ia akan mencipta P baharu dan menetapkannya kepada M yang menunggu.

Sumber Tambahan

Untuk penerokaan lanjut mengenai topik ini, rujuk bahan berikut:

  • https://www.programmersought.com/article/79557885527/
  • go-goroutine -os-thread-and-cpu-management

Memahami apabila penjadual Go mencipta M dan P baharu adalah penting untuk mengoptimumkan aplikasi Go anda. Dengan mempertimbangkan potensi untuk menyekat operasi dan hubungan 1:1 antara M dan P, anda boleh mereka bentuk kod anda untuk pengurusan goroutine yang cekap dan memaksimumkan kesesuaian dalam had sumber yang tersedia.

Atas ialah kandungan terperinci Bilakah Penjadual Go Mencipta M dan P Baharu untuk Tugasan Menyekat?. 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