Pull to refresh

Comments 4

Спасибо за ещё одну интересную и доходчивую статью по достойной теме.

В языке Go, термины "P", "M" и "G" относятся к компонентам, используемым во время выполнения горутин (goroutines) и планирования параллельной работы.

  • P (процессор) - это горутина-планировщик, который отвечает за управление выполнением горутин. Он выполняет распределение горутин на доступные ядра процессора и управляет переключением между горутинами во время выполнения.

  • M (логический процессор) - это логический поток выполнения, который привязывается к физическому процессору. Каждый P может быть связан с одним M, и M отвечает за выполнение набора горутин, называемых G-планировщиком.

  • G (горутина) - это легковесный поток выполнения в Go. Горутины позволяют выполнять параллельные операции и обеспечивают удобные механизмы синхронизации и обмена данными.

Вместе, P, M и G обеспечивают механизм планирования и выполнения горутин в Go, позволяя эффективно использовать доступные ядра процессора для выполнения параллельных задач.

В контексте языка программирования Go, термин "M" обычно означает "machine" или "OS thread". "M" представляет собой логическую сущность, которая связывается с операционной системой и представляет собой поток выполнения, управляемый операционной системой. Каждая горутина (goroutine) в Go привязана к определенному "M" для выполнения своей работы.

Таким образом, "M" можно перевести как "machine" или "OS thread" на английском языке.

В GoLang локальная очередь горутин ограничена фиксированным размером, который по умолчанию равен 256 горутинам. Это означает, что каждый процессор (P) в Go имеет локальную очередь, в которой могут храниться до 256 горутин. Когда горутина готова к выполнению, она помещается в локальную очередь соответствующего процессора.

Sign up to leave a comment.

Articles