Sobes.tech
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.