Go использует M:N-планирование горутин поверх потоков ОС и балансировку готовой работы, включая work stealing. Это не один поток на горутину и не только кооперативная модель.
Планировщик какого семейства используется в Go?
Go использует M:N-планирование горутин поверх потоков ОС и балансировку готовой работы, включая work stealing. Это не один поток на горутину и не только кооперативная модель.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Go использует M:N-планирование горутин поверх потоков ОС и балансировку готовой работы, включая work stealing. Это не один поток на горутину и не только кооперативная модель.
Готовые горутины распределяются между исполнителями; локальные очереди помогают уменьшать конкуренцию, а перенос работы — не оставлять процессор без задач. Существуют также глобальная очередь, таймеры и ожидание I/O.
Планировщик сочетает уступку выполнения при ожидании с возможностью вытеснения. Конкретные эвристики runtime — детали реализации, поэтому нельзя обещать строгую справедливость или фиксированное время запуска каждой задачи.