Sobes.tech
Junior — Middle

Oldingi tashkilotingizda ish jarayonlari qanday qurilgan va boshqarilganini tavsiflang.

sobes.tech AI

AIdan javob

Oldingi tashkilotda ish jarayonlari Go dasturlash tilida goroutine va kanallar yordamida qurilgan edi, bu esa parallel vazifalarni samarali boshqarishga imkon berdi.

Asosiy nuqtalar:

  • Har bir vazifa alohida goroutine ichida ishga tushirilgan, bu esa bir nechta jarayonlarni bir vaqtning o'zida bajarishga imkon berdi.
  • Goroutine'lar o'rtasida xavfsiz ma'lumot almashinuvi uchun kanallar ishlatilgan, bu esa ma'lumotlar almashinuvi xavfsizligini ta'minladi.
  • Ishning yakunlanishini nazorat qilish uchun sync.WaitGroup ishlatilgan, bu esa barcha goroutine'larning tugashini kutishga imkon berdi.

Misol:

var wg sync.WaitGroup
jobs := make(chan int, 10)

worker := func(id int, jobs <-chan int, wg *sync.WaitGroup) {
    defer wg.Done()
    for job := range jobs {
        fmt.Printf("Ishchi %d vazifa %d ni bajarishda\n", id, job)
        // vazifa bajarish
    }
}

func main() {
    for w := 1; w <= 3; w++ {
        wg.Add(1)
        go worker(w, jobs, &wg)
    }

    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs)

    wg.Wait()
}

Shu tarzda, jarayonlar kiruvchi vazifalarni parallel ravishda bajaradigan ishchi guruhlar sifatida tashkil etilgan.