Sobes.tech
Senior

Къде попадат горутините при създаване — в локалната или глобалната опашка на планировчика Go?

sobes.tech AI

Отговор от AI

При създаване на горутина в Go, тя се поставя в локалната опашка на планировчика (local run queue), която принадлежи на конкретен M (машина, системен поток).

Go runtime използва модел M:N, където M са системните потоци, а G са горутините. Всяко M има своя собствена локална опашка за изпълнение на горутините. Ако локалната опашка се препълни или е празна, планировчикът може да балансира горутините между локалната и глобалната опашка.

По този начин, новата горутина първо се поставя в локалната опашка на планировчика, което позволява ефективно използване на кеша на процесора и намалява разходите за превключване на контекста.