Sobes.tech
Junior — Middle

Milyen esetekben szünteti meg egy goroutine a végrehajtást és adja át az irányítást egy másiknak?

sobes.tech MI

Válasz az MI-től

Go-ban egy goroutine megszűnik a végrehajtásban, és átadja az irányítást egy másik goroutine-nak a következő esetekben:

  • Amikor a goroutine kifejezetten meghív egy olyan függvényt, amely blokkolja (például, olvasás egy üres csatornáról).
  • A runtime.Gosched() kulcsszó használatakor, amely önkéntesen átadja a processzort más goroutine-oknak.
  • Amikor a goroutine befejezi a függvényét (visszatér a függvényből), abbahagyja a végrehajtást.

A Go ütemező automatikusan váltogatja a végrehajtást a goroutine-ok között, biztosítva a konkurenciát. Például, amikor blokkolódik bemenet/kimeneti műveleteknél vagy adatokat vár egy csatornáról, az aktuális goroutine szünetel, és a kontroll átadódik egy másiknak.