Sobes.tech
Junior — Middle

Sistemdə kanallar vasitəsilə qarşılıqlı əlaqə və məlumatların ötürülməsini necə təşkil etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, goroutine-lər arasındakı qarşılıqlı əlaqə tez-tez kanallar (channels) vasitəsilə təşkil olunur — məlumatların ötürülməsi üçün tipli boru kəmərləri.

Məlumatları ötürmək üçün make(chan Tip) ilə kanal yaradılır. Goroutine-lər <- operatoru ilə kanala məlumat göndərə və eyni operatorla kanaldan məlumat ala bilər, bu da sinxronizasiyanı təmin edir.

Nümunə:

package main

import (
    "fmt"
    "time"
)

func istehsalçı(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i // məlumat göndərilməsi
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // kanalı bağlayırıq, sonu barədə siqnal vermək üçün
}

func istehlakçı(ch <-chan int) {
    for val := range ch { // kanaldan məlumat alınması
        fmt.Println("Alınmış:", val)
    }
}

func main() {
    ch := make(chan int)
    go istehsalçı(ch)
    istehlakçı(ch)
}

Beləliklə, kanallar goroutine-lər arasında məlumatların təhlükəsiz və səmərəli ötürülməsini təmin edir, yarış şəraitləri və bloklamaların qarşısını alır.