Junior — Middle
Go dilinde yarışma, eşzamansızlık ve paralellik nasıl uygulanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, yarışma, asenkronluk ve paralellik, goroutine'ler ve kanallar kullanılarak gerçekleştirilir.
- Goroutine'ler —
goanahtar kelimesiyle başlatılan hafif iş parçacıklarıdır. Asenkron olarak fonksiyonlar çalıştırmaya ve kaynaklar için yarışmaya olanak tanır. - Kanallar — goroutine'ler arasında güvenli veri alışverişi için kullanılır, senkronizasyonu ve mesaj iletimini sağlar.
Paralellik, birden fazla goroutine'in aynı anda birkaç işlemci çekirdeğinde çalıştırılmasıyla elde edilir, eğer GOMAXPROCS ayarlanmışsa.
Örnek:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("İşçi %d tamamlandı", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch) // goroutine başlatılır
}
for i := 1; i <= 3; i++ {
msg := <-ch // kanal üzerinden sonuç alınır
fmt.Println(msg)
}
}
Bu şekilde, Go, yarışma ve paralellik ile çalışma için basit ve etkili araçlar sağlar.