Junior — Middle
Чӣ тавр моделҳои рақобат дар забони Golang амалӣ карда мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, модели рақобат асос ёфтааст ба goroutines ва каналҳо.
-
Goroutines — ин равандҳои сабук мебошанд, ки бо калиди калид
goоғоз меёбанд. Онҳо имкон медиҳанд, ки функсияҳо дар параллел иҷро шаванд, бе хароҷоти зиёди захираҳо. -
Каналҳо — ин каналҳои типдор барои мубодилаи маълумот байни 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)
}
}
Дар ин мисол, се goroutine дар параллел кор мекунанд ва натиҷаро ба канал мефиристанд, ки аз он ҷараёни асосӣ мехонад.
Ин тариқ, Go барномасозии ҳамзамонро содда мекунад, мураккабии равандҳо ва ҳамоҳангсозиро пинҳон мекунад.