Junior — Middle
Bir goroutine qanday holatda bloklangan bo'lsa, u nima bo'ladi?
sobes.tech AI
AIdan javob
Go'da bir goroutine bir operatsiyada (məsələn, kanal oxuma, sinxronizasiya gözləmə, giriş-çıxış) bloklandıqda, o dayandırılır və Go'nun planlayıcısı sistem iş parçacığını sərbəst buraxır və digər goroutinlərin işləməsinə imkan verir. Bu, sistem resurslarının səmərəli istifadəsini və paralelliyin miqyaslandırılmasını təmin edir.
Yəni, bloklayan əməliyyat bütün OS-iş parçacığını deyil, yalnız müəyyən goroutine-i bloklayır. Planlayıcı, işləməyə hazır olan digər goroutinlərə keçir.
Nümunə:
ch := make(chan int)
func() {
val := <-ch // goroutine, dəyər alınana qədər bloklanır
fmt.Println(val)
}()
ch <- 42 // goroutine-i açır
Bu nümunədə, goroutine kanal oxuma zamanı bloklanır, lakin planlayıcı, onun gözlədiyi müddətdə digər goroutinlərin işləməsinə imkan verir.