Junior — Middle
Birden fazla goroutine'den kanal üzerinde kilitleme kullanmadan güvenli veri yazmayı nasıl sağlayabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, birden fazla goroutine'den kanal aracılığıyla güvenli bir şekilde veri yazmak için genellikle kilit kullanmadan, kanalın kendisini kullanmak yeterlidir çünkü Go'daki kanallar varsayılan olarak eşzamanlılığa karşı güvenlidir.
Örnek:
ch := make(chan int)
// Birden fazla goroutine'den kanala yazma
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // güvenli yazma
}(i)
}
// Kanaldan okuma
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Yazmanın engellenmemesini sağlamak istiyorsanız, tamponlu bir kanal kullanabilirsiniz. Bu durumda, manuel kilitlere gerek kalmaz çünkü kanal senkronizasyonu sağlar.