Sobes.tech
Junior — Middle

Sistemde kanallar aracılığıyla etkileşim ve veri aktarımını nasıl organize edilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, goroutine'ler arasındaki etkileşim genellikle kanallar (channels) aracılığıyla düzenlenir — veri iletimi için tiplenmiş boru hatları.

Veri iletmek için make(chan Tip) kullanılarak bir kanal oluşturulur. Goroutine'ler, <- operatörüyle kanala veri gönderebilir ve aynı operatörle kanaldan veri alabilirler, bu da senkronizasyonu sağlar.

Örnek:

package main

import (
    "fmt"
    "time"
)

func üretici(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i // veri gönderimi
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // kanal kapatılır, tamamlandığını göstermek için
}

func tüketici(ch <-chan int) {
    for val := range ch { // kanaldan veri alma
        fmt.Println("Alındı:", val)
    }
}

func main() {
    ch := make(chan int)
    go üretici(ch)
    tüketici(ch)
}

Bu şekilde, kanallar güvenli ve verimli bir şekilde goroutine'ler arasında veri iletimine olanak tanır, yarış koşulları ve kilitlenmelerden kaçınılır.