Junior — Middle
Ինչպե՞ս իրականացնել տեղեկատվության փոխանակում երկու goroutine-ների միջև Go լեզվում։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, երկու goroutine-ների միջև տեղեկատվության փոխանակումը սովորաբար իրականացվում է ճանապարհների (channels) միջոցով: Ճանապարհները ապահովում են տվյալների անվտանգ փոխանցումը և նրանց սինխրոնիզացիան:
Ճանապարհի միջոցով փոխանակման օրինակ:
package main
import (
"fmt"
)
func sender(ch chan<- string) {
ch <- "Բարև sender-ից"
}
func receiver(ch <-chan string) {
msg := <-ch
fmt.Println("Ստացված հաղորդագրությունը:", msg)
}
func main() {
ch := make(chan string)
go sender(ch)
go receiver(ch)
// Կանխատեսում ենք, որ goroutine-ները ավարտվեն
var input string
fmt.Scanln(&input)
}
Այստեղ, sender ուղարկում է տողը դեպի ճամփորդը, իսկ receiver այն կարդում է: Ճանապարհները ապահովում են տվյալների անվտանգ փոխանակում առանց mutex-ների կամ այլ սինխրոնիզացիոն մեխանիզմների անհրաժեշտության: