Worker Pool
Worker Pool vazifalarni aniq belgilash orqali gorutinlar sonini cheklash imkonini beradi. Bu ortiqcha ulanishlarni oldini oladi, resurslar sarfini kamaytiradi va topshiriqni bajarishni boshqarish mumkin bo'ladi.
Asosiy maqsad — resurslarni nazorat bilan ishlatish va haddan tashqari ko'p goroutine yaratishdan qochish.
Oddiy qilib aytganda, sizda 1000 ta vazifa bo'lsa, har bir vazifani bajarish uchun alohida goroutine ochsangiz, bu resurslar (CPU, RAM) sarfini oshiradi. Worker Pool yondashuvida esa siz faqat 5 ta ishchini (goroutine) ishga tushirasiz va ular navbat bilan barcha vazifalarni bajaradi.
Taksi xizmatida 100 ta mijoz bo'lishi mumkin, lekin sizda faqat 10 ta haydovchi bo'lsa, siz 10 nafar haydovchidan iborat worker pool hosil qilasiz. Mijozlar navbatda kutadi, haydovchi bo'shasa keyingi mijozga xizmat ko'rsatadi.
Misol:
Natija:
Worker 3: ish 1 ni bajaryapti
Worker 2: ish 2 ni bajaryapti
Worker 1: ish 3 ni bajaryapti
Worker 1: ish 4 ni bajaryapti
Worker 2: ish 5 ni bajaryapti
Natija: 6
Natija: 4
Natija: 2
Natija: 10
Natija: 8