Worker pools
Go dilində, worker pool’lar müəyyən bir işi yerinə yetirmək üçün təyin olunmuş işçi qrupudur. İşlər channel
-a göndərilir və bu işlər işçilər tərəfindən emal olunur. Bu metod, paralel emal və işlərin işçilər arasında paylanması ilə iş yükünü balanslaşdırmağa kömək edir.
Bu nümunədə, worker
adlı bir funksiya yaradılır. Bu funksiya işçilər tərəfindən emal olunacaq işləri alır və nəticələri results
kanalına geri qaytarır.
jobs
adlı bir kanal yaradılır və bu kanal vasitəsilə 100-ə qədər iş yükləri göndərilə bilər.results
adlı başqa bir kanal yaradılır və 100 nəticə bu kanal vasitəsilə geri alına bilər.
İlk for
dövrü ilə, 3 işçi üçün goroutine
yaradılır. Hər işçi worker
funksiyasını icra edərək, ona verilmiş işləri emal edir.
Növbəti for
dövrü ilə, 5 iş göndərilir və bu işlər jobs
kanalına daxil edilir. close
funksiyası vasitəsilə jobs
kanalı bağlanır.
Sonuncu for
dövrü ilə, emal olunmuş nəticələr results
kanalından alınır.
Output:
Bu nümunə, işlərin işçilər arasında necə paylanmasını və nəticələrin necə geri alındığını göstərir.