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.