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.