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 ё механизмҳои дигари ҳамоҳангсозӣ.