Sobes.tech
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 барномасозии ҳамзамонро содда мекунад, мураккабии равандҳо ва ҳамоҳангсозиро пинҳон мекунад.