Junior — Middle
Go dilinde goroutine'lerle etkileşim kurmak için hangi olaylar ve sinyaller kullanılabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, goroutine'lerle etkileşim kurmak için kullanılan temel mekanizmalar şunlardır:
- Kanal (channels) — goroutine'ler arasında veri ve sinyal iletiminin ana yoludur. Kanallar aracılığıyla değerler gönderilebilir ve alınabilir, bu da senkronizasyon sağlar.
ch := make(chan int)
go func() {
ch <- 42 // değer gönderimi
}()
val := <-ch // değer alımı
- Bağlam (context.Context) — goroutine'lerin yaşam süresini yönetmek, işlemleri iptal etmek ve iptal sinyalleri göndermek için kullanılır.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// iptal işlemi
}
}(ctx)
cancel() // iptal sinyali
-
sync.WaitGroup — bir grup goroutine'in tamamlanmasını beklemek için kullanılır.
-
İşletim sistemi sinyalleri —
os/signalpaketi aracılığıyla sistem sinyalleri yakalanabilir ve goroutine'lere düzgün sonlandırma için iletilebilir.
Bu şekilde, etkileşim için temel "olaylar" kanallar üzerinden gönderme/alma işlemleri, bağlam aracılığıyla iptal ve sistem sinyalleridir.