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.