Sobes.tech
Middle — Middle+

Ko'p ipli ilovada vazifalarni bajarish uchun iplar havzasidan foydalanish konseptini tushuntiring.

sobes.tech AI

AIdan javob

Ishchi havuz — bu, vazifalarni bajarish uchun bir vaqtning o‘zida ishlayotgan oqimlar (Go'dagi goroutinlar) sonini cheklash imkonini beradigan mexanizm. Har bir vazifa uchun yangi goroutin yaratish o‘rniga, vazifalar navbatga qo‘yiladi, va belgilangan sonli ishchilar (goroutinlar) ularni ketma-ket bajaradilar. Bu resurslardan foydalanishni nazorat qilishga, goroutinlarning ortiqcha yaratilishini oldini olishga va ishlash samaradorligini oshirishga yordam beradi.

Go'da, ishchi havuzini vazifa kanali va belgilangan sonli ishchi goroutinlar yordamida amalga oshirish mumkin, ular kanaldan vazifalarni o‘qib, bajaradilar:

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        // vazifa j ni bajarish
        results <- j * 2
    }
}

func main() {
    jobs := make(chan int, 100)
    results := make(chan int, 100)

    // 3 ta ishchi ishga tushiramiz
    for w := 1; w <= 3; w++ {
        go worker(w, jobs, results)
    }

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

    // Natijalarni olamiz
    for a := 1; a <= 5; a++ {
        fmt.Println(<-results)
    }
}

Ushbu yondashuv ilovaning parallelizmi va resurslarini samarali boshqarish imkonini beradi.