Goroutine-də başlatılmış tapşırıq planlayıcının qlobal növbəsinə əlavə oluna bilərmi?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, goroutine-də icra olunan vəzifə aşağıdakı hallarda qlobal planlayıcı növbəsinə əlavə oluna bilər:
-
goilə yaradıldıqda:go func() { ... }()çağırışında, yeni goroutine yaradılır və icra üçün qlobal planlayıcı növbəsinə yerləşdirilir. -
Əgər hazırkı işçi (M) məşğul və ya yüklənibsə: Planlayıcı, yükü işçilər arasında bölüşdürmək üçün goroutine-i qlobal növbəyə köçürə bilər.
-
Goroutine bloklandıqda: Əgər goroutine resursu (məsələn, kanal və ya timer) gözləyirsə, o dayandırıla və açıldıqdan sonra qlobal növbəyə əlavə oluna bilər.
-
Əgər planlayıcının yerli növbəsi boşdursa: Planlayıcı, yükü balanslaşdırmaq üçün qlobal növbədən tapşırıqları götürə bilər.
Goroutine-i işə salma nümunəsi:
func main() {
go func() {
fmt.Println("Goroutine-dən salam")
}()
time.Sleep(time.Second) // goroutine-in icra üçün vaxt vermək üçün
}
Burada, goroutine dərhal planlayıcının qlobal növbəsinə əlavə olunur və icra edilir.