Какая оптимизация есть у локальной очереди планировщика Go (runnext)?
В планировщике Go у каждой P (processor) есть локальная очередь горутин.
Читать ответПодготовка к интервью
32 вопроса с ответами по теме «Горутины и планировщик Go»
Что проверяют на интервью
Вопросы связывают устройство планировщика Go с практической организацией конкурентной работы. Разборы охватывают очереди, стек и состояния горутин, ожидание результатов, обработку ошибок, ограничение ресурсов и завершение фоновых задач.
Каталог
В планировщике Go у каждой P (processor) есть локальная очередь горутин.
Читать ответВ Go ситуация, когда потоки (горутины) остаются заблокированными из-за недостаточного доступа к ресурсам, называется starvation (голодание).
Читать ответМодель планировщика Go — GMP (Goroutine, Machine, Processor) — это система, которая управляет выполнением горутин для эффективного использования системных ресурсов.
Читать ответВ Go для обработки ошибок в горутинах обычно используют следующие подходы:
Читать ответПуть горутины после вызова системной функции:
Читать ответВ стандартном пакете errgroup при первой ошибке горутины ErrGroup не прерывает остальные горутины — он ждёт завершения всех.
Читать ответЕсли defer стоит снаружи горутины, то отложенная функция будет вызвана при выходе из внешней функции, а не при завершении горутины.
Читать ответДля реализации семафора с весом (weight) в методах Lock, TryLock и Release можно использовать атомарный счетчик, который отражает текущее количество занятых ресурсов, и максимальный лимит ресурсов.
Читать ответВ планировщике Go (Golang) используются несколько разновидностей очередей для управления горутинами (goroutines):
Читать ответПоследовательность вывода 100 горутин в Go при каждом запуске, как правило, не будет одинаковой. Это связано с тем, что планировщик горутин в Go работает конкурентно и не гарантирует порядок выполнения.
Читать ответВ Go потоки (M — OS-потоки) извлекают горутины (G) из общего глобального пула задач (global run queue) в следующих случаях:
Читать ответВ Go задачи (горутин) помещаются в общую очередь планировщика выполнения (run queue) в следующих случаях:
Читать ответ