В планировщике Golang (M) присутствуют следующие сущности:
- M (Machine): Представляет собой поток операционной системы. Отвечает за исполнение G-кода на процессоре. M забирает G из локальной очереди P или обходной очереди.
- P (Processor): Логический процессор (контекст). Содержит локальную очередь готовых к выполнению G. P привязан к M, и только один M может быть привязан к P в любой момент времени. Количество P по умолчанию равно
GOMAXPROCS
.
- G (Goroutine): Легковесный поток выполнения. Представляет собой конкурентную функцию или метод. G исполняется на P.
go
go