Sobes.tech
Junior — Middle

Toate goroutine-urile trebuie să fie lansate simultan și în paralel în mod implicit?

sobes.tech AI

Răspuns de la AI

Nu, toate goroutine-urile nu sunt obligate să pornească simultan și în paralel în mod implicit. Goroutine-urile sunt fire ușoare planificate de scheduler-ul Go.

Când porniți mai multe goroutine-uri, acestea pot fi executate secvențial sau în paralel, în funcție de numărul de fire de sistem disponibile (GOMAXPROCS) și de încărcarea actuală.

În mod implicit, dacă GOMAXPROCS este egal cu 1, goroutine-urile vor fi executate concurent, dar nu în paralel — adică, schimbarea între ele are loc la nivelul scheduler-ului, dar doar una este executată în același timp.

Pentru a obține un paralelism real, trebuie să creșteți GOMAXPROCS (de obicei egal cu numărul de nuclee ale procesorului). Astfel, mai multe goroutine-uri pot fi executate simultan pe nuclee diferite.