Junior — Middle
Чӣ гуна ҳамкории байни goroutine-ҳо дар Go амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, ҳамкорӣ байни goroutines ба воситаи каналҳо (channels) амалӣ мешавад. Каналҳо имкон медиҳанд, ки маълумотҳоро бехатар байни goroutines интиқол диҳанд ва онҳоро ҳамоҳанг созанд.
Мавзӯъҳои асосӣ:
- Канал бо
make(chan Тип)сохта мешавад. - Ба канал фиристодан:
ch <- арзиш. - Аз канал гирифтани:
арзиш := <-ch. - Каналҳо метавонанд бо буфер ё бе буфер бошанд.
Масалан:
func main() {
ch := make(chan string)
go func() {
ch <- "салом аз goroutine"
}()
msg := <-ch
fmt.Println(msg)
}
Бинобар ин, каналҳо таъмин мекунанд, ки байни goroutines параллел бехатар ва қулай ҳамкорӣ сурат гирад, бе ниёз ба истифодаи mutexҳо ё механизмҳои дигар барои бастани.