Sobes.tech
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.