Junior — Middle
Veri iletimi nasıl bufferlenmemiş bir kanal aracılığıyla gerçekleştirilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, tamponlamayan kanal (buffer olmayan kanal), goroutine'ler arasında senkron veri iletimini sağlar. Bu, bir değeri kanala göndermenin, başka bir goroutine bu değeri kanaldan alana kadar engelleneceği anlamına gelir ve tersi de geçerlidir: alma işlemi, okunacak değer olana kadar engellenir.
Bu şekilde, tamponlamayan kanal aracılığıyla veri aktarımı, gönderen ve alıcı arasındaki senkronizasyon ile gerçekleşir ve ara depolama olmadan veri alışverişi garanti edilir.
Örnek:
ch := make(chan int) // tamponlamayan kanal
go func() {
ch <- 42 // gönderme, birisi okumazsa engellenir
}()
value := <-ch // alma, değer ortaya çıkana kadar yürütmeyi engeller
fmt.Println(value) // 42 yazdırır
Bu örnekte, goroutine bir sayıyı kanala gönderir ve ana goroutine bu sayıyı okumayana kadar engellenir.