Sobes.tech
Junior — Middle

Go dasturlash tilida raqobat tushunchasini va uning parallel ilovalarni ishlab chiqishda o'rnini tushuntiring

sobes.tech AI

AIdan javob

Go tilida, raqobat (concurrency) — bu dastur bir vaqtning o‘zida bir nechta vazifani bajarish qobiliyatidir, bu protsessor resurslarini samarali ishlatishni ta'minlaydi. Go tilida bu go kalit so‘zi yordamida ishga tushiriladigan yengil oqimlar — goroutinlar orqali amalga oshiriladi.

Raqobat, kodning turli qismlari bir vaqtning o‘zida bajariladigan parallel ilovalarni yozishga imkon beradi, bu esa dasturlarning ishlash samaradorligini va javob berish qobiliyatini oshiradi.

Goroutinlar o‘rtasida sinxronizatsiya qilish va ma’lumot almashish uchun kanallar (channels) ishlatiladi, ular ochiq blokirovkalarisiz xavfsiz aloqa ta’minlaydi.

Misol:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Ishchi %d boshlanmoqda\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Ishchi %d tugatildi\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // goroutinni ishga tushirish
    }
    time.Sleep(2 * time.Second) // goroutinlar tugashini kutish
}

Bu misolda, uchta goroutin bir vaqtning o‘zida ishlaydi va Go tilida raqobatni ko‘rsatadi.