Junior — Middle
Կարող եք տալ օրինակ, երբ և ինչպես օգտագործվում են ալիքները տվյալների փոխանակման համար միջեւ հոսքեր կամ գորուտիններ?
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, ալիքները օգտագործվում են անվտանգ տվյալների փոխանակման համար goroutine-ների միջև, թույլ տալով նրանց սինխրոնիզացնել և փոխանցել արժեքներ:
Օրինակ՝ ալիք օգտագործելով թվեր փոխանցելու մեկ goroutine-ից մյուսին:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // տվյալների ուղարկում ալիքին
time.Sleep(time.Millisecond * 500)
}
close(ch) // ալիք փակվում է բոլոր տվյալների ուղարկումից հետո
}
func consumer(ch chan int) {
for val := range ch { // տվյալների ստացում ալիքից
fmt.Println("Ստացվեց:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Այստեղ, producer-ը ուղարկում է թվեր ալիքին, իսկ consumer-ը կարդում է դրանք: Ալիքները ապահովում են տվյալների անվտանգ փոխանցում առանց mutex-ների կամ այլ սինխրոնիզացիոն մեխանիզմների անհրաժեշտության։