Sobes.tech
Senior

Dokąd trafiają goroutines podczas tworzenia — do lokalnej czy globalnej kolejki planisty Go?

sobes.tech AI

Odpowiedź od AI

Tworząc gorutynę w Go, trafia ona do lokalnej kolejki planisty (local run queue), która należy do konkretnego M (maszyny, wątku systemowego).

Środowisko uruchomieniowe Go używa modelu M:N, gdzie M to wątki systemowe, a G to gorutyny. Każde M ma własną lokalną kolejkę gorutyn do wykonania. Jeśli lokalna kolejka się przepełni lub będzie pusta, planista może równoważyć gorutyny między lokalną a globalną kolejką.

W ten sposób nowa gorutyna najpierw trafia do lokalnej kolejki planisty, co pozwala na efektywne wykorzystanie pamięci podręcznej procesora i zmniejsza koszty przełączania kontekstu.