Sobes.tech
Junior — Middle

Dört goroutine'un başlatıldığında dört işlemci çekirdeğine nasıl dağıtıldığı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da, Goroutine planlayıcısı (Goroutine scheduler), goroutine'leri sistem iş parçacıklarıyla (M) dağıtır ve bunlar da işlemci çekirdeklerine bağlanır.

Eğer 4 goroutine ve 4 işlemci çekirdeğiniz varsa, planlayıcı başlatıldığında her goroutine'yi farklı bir çekirdeğe dağıtabilir, böylece paralel yürütme sağlar. Bu, ortam değişkeni GOMAXPROCS 4 olarak ayarlandığında (modern Go sürümlerinde varsayılan olarak kullanılabilir çekirdek sayısına eşittir) mümkündür.

Örnek:

runtime.GOMAXPROCS(4) // kullanılabilir iş parçacığı sayısını 4 olarak ayarlar

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Goroutine %d başlatıldı\n", id)
        // çalışma
    }(i)
}

Go planlayıcısı, goroutine'leri farklı çekirdeklerde çalıştırılabilecek iş parçacıklarına dağıtacaktır, bu da çok işlemcili sistemlerin verimli kullanılmasını sağlar. Ancak, kesin dağılım sistem yüküne ve iç planlayıcıye bağlıdır.