Sobes.tech
Junior — Middle

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:

  • go ilə 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.