Junior — Middle
W jakich przypadkach jedna gorutyna kończy wykonywanie i przekazuje kontrolę innej?
sobes.tech AI
Odpowiedź od AI
W Go, gorutyna kończy wykonywanie i przekazuje kontrolę innej gorutynie w następujących przypadkach:
- Gdy gorutyna wywołuje jawnie funkcję, która ją blokuje (np. odczyt z kanału, jeśli kanał jest pusty).
- Przy użyciu słowa kluczowego
runtime.Gosched(), które dobrowolnie oddaje procesor innym gorutynom. - Gdy gorutyna kończy swoją funkcję (wraca z funkcji), przestaje się wykonywać.
Planista gorutyn w Go automatycznie przełącza wykonanie między gorutynami, zapewniając współbieżność. Na przykład, podczas blokady na operacjach wejścia/wyjścia lub oczekiwania na dane z kanału, bieżąca gorutyna jest zawieszana, a kontrola przekazywana innym.