Sobes.tech
Junior — Middle

Go dilində iki goroutine arasında məlumat mübadiləsini necə həyata keçirmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, iki goroutine arasında məlumat mübadiləsi adətən kanallar (channels) vasitəsilə həyata keçirilir. Kanallar, goroutine-lər arasında məlumatların təhlükəsiz ötürülməsini və onların sinxronizasiyasını təmin edir.

Kanal vasitəsilə mübadilə nümunəsi:

package main

import (
    "fmt"
)

func sender(ch chan<- string) {
    ch <- "Sender-dən salam"
}

func receiver(ch <-chan string) {
    msg := <-ch
    fmt.Println("Qəbul edilən mesaj:", msg)
}

func main() {
    ch := make(chan string)
    go sender(ch)
    go receiver(ch)

    // Goroutine-lərin tamamlanmasını gözləyirik
    var input string
    fmt.Scanln(&input)
}

Burada, sender sətiri kanala göndərir və receiver ondan oxuyur. Kanallar təhlükəsiz məlumat mübadiləsini təmin edir, mutex və ya digər sinxronizasiya mexanizmlərinə ehtiyac olmadan.