Saya ada soalan yang sangat asas: Bolehkah konteks penjadual sistem pengendalian bertukar antara benang peringkat pengguna yang dipetakan ke peringkat kernel?
Andaikan penjadual menjadualkan goroutine A pada benang kernel. Sekarang goroutine A membuat panggilan sysblock, siapakah yang menukar konteks dahulu: OS atau penjadual pergi?
Go penjadual menguruskan goroutines, yang digunakan semula pada urutan peringkat sistem pengendalian. Penjadual Go dengan cekap boleh melaksanakan suis konteks antara Goroutines, seperti apabila Goroutine membuat panggilan sistem menyekat, tanpa melibatkan penjadual OS. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa disebabkan oleh faktor seperti pemotongan masa, penjadual sistem pengendalian mungkin secara bebas mengganggu dan melaksanakan suis konteks. Oleh itu, masa yang tepat bagi suis konteks dan penglibatan penjadual sistem pengendalian mungkin tidak dapat ditentukan dengan tepat daripada perspektif program Go.
Bacaan lanjut:
proc.go dalam kod sumber golang
Go Scheduler: Melaksanakan bahasa serentak yang ringan
Atas ialah kandungan terperinci Penukaran konteks Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!