Junior — Middle
Чӣ гуна параллелизм ва рақобат дар забони Go амалӣ карда мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, параллелизм ва рақобат тавассути goroutines ва каналҳо амалӣ карда мешаванд.
-
Goroutines — ин равандҳои сабук мебошанд, ки бо калиди
goоғоз мешаванд. Онҳо имкон медиҳанд, ки функсияҳо ба таври асинхронӣ ва параллелӣ иҷро шаванд. -
Каналҳо барои иртибот байни goroutines ва ҳамоҳангсозии маълумот истифода мешаванд. Онҳо имкон медиҳанд, ки арзишҳоро бехатар байни goroutines интиқол диҳанд, ки боиси пешгирии ҳолатҳои рақобат мешаванд.
Масалан:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("Корманди %d анҷом ёфт", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
Бо ҳамин, Go воситаҳои содда ва муассир барои навиштани барномаҳои рақобатӣ пешниҳод мекунад, ки идоракунии мураккаби равандҳоро талаб намекунад.