Sobes.tech
Junior — Middle

Golang tilida raqobat modelini qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Go tilida, raqobat modeliga gorutinalar va kanallar asoslangan.

  • Gorutinalar — bu yengil oqimlar bo‘lib, go kalit so‘zi bilan boshlanadi. Ular resurslarni katta sarf qilmasdan funksiyalarni parallel bajarishga imkon beradi.

  • Kanallar — bu gorutinalar o‘rtasida ma’lumot almashish uchun tiplangan kanallar bo‘lib, sinxronizatsiya va xavfsiz ma’lumot almashishni ta’minlaydi.

Misol:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("Ishchi %d tugadi", 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)
    }
}

Ushbu misolda, uchta gorutina parallel ravishda ish olib boradi va natijani kanalga yuboradi, asosiy oqim esa uni o‘qiydi.

Shu tarzda, Go raqobatli dasturlashni soddalashtiradi, oqimlar va sinxronizatsiya murakkabligini yashiradi.