Sobes.tech
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-ների կամ այլ սինխրոնիզացիոն մեխանիզմների անհրաժեշտության: