Sobes.tech
Junior — Middle

În ce cazuri o goroutine încetează execuția și transferă controlul către alta?

sobes.tech AI

Răspuns de la AI

În Go, o gorutină încetează execuția și transferă controlul către o altă gorutină în următoarele cazuri:

  • Când gorutina apelează explicit o funcție care o blochează (de exemplu, citirea dintr-un canal gol).
  • La utilizarea cuvântului cheie runtime.Gosched(), care cedează voluntar procesorul altor gorutine.
  • Când gorutina își încheie funcția (se întoarce din funcție), încetează executarea.

Planificatorul de gorutine din Go schimbă automat execuția între gorutine, asigurând concurența. De exemplu, atunci când se blochează la operații de intrare/ieșire sau se așteaptă date dintr-un canal, gorutina curentă este suspendată, iar controlul este transferat către alta.