|
Bu misolda goroutinalar va kanallar yordamida ishchi hovuzini qanday amalga oshirishni ko’rib chiqamiz. |
|
![]()
|
|
|
|
|
Quyida ishchi, uning bir nechta parallel nusxalarini
ishga tushiramiz. Bu ishchilar |
|
|
|
|
Ishchilar hovuzimizdan foydalanish uchun ularga ish yuborishimiz va natijalarini yig’ishimiz kerak. Buning uchun 2 ta kanal yaratamiz. |
|
|
Bu 3 ta ishchini ishga tushiradi, ular hozircha ish yo’qligi sababli dastlab bloklangan bo’ladi. |
|
|
Bu yerda 5 ta |
|
|
Nihoyat ishning barcha natijalarini yig’amiz. Bu shuningdek ishchi goroutinalar tugaganligini ham ta’minlaydi. Bir nechta goroutinani kutishning muqobil usuli WaitGroup dan foydalanishdir. |
|
|
Ishlayotgan dasturimiz 5 ta ishning turli ishchilar tomonidan bajarilayotganini ko’rsatadi. Dastur jami taxminan 5 soniyalik ish bajarishiga qaramay, faqat taxminan 2 soniya vaqt oladi, chunki 3 ta ishchi parallel ishlaydi. |
|
|
Keyingi misol: WaitGroups.