|
در این مثال میبینیم که چطور با گوروتینها و کانالها یک استخر کارگر (worker pool) پیادهسازی کنیم. |
|
![]()
|
|
|
|
|
این worker (کارگر) است که چند نمونهٔ همروند از آن را
اجرا میکنیم. این کارگرها کارها را از کانال |
|
|
|
|
برای استفاده از استخر کارگرها باید به آنها کار بفرستیم و نتایجشان را جمع کنیم. برای این کار ۲ کانال میسازیم. |
|
|
این بخش ۳ کارگر را راه میاندازد که در ابتدا مسدودند، چون هنوز کاری وجود ندارد. |
|
|
اینجا ۵ کار ( |
|
|
در نهایت همهٔ نتایج کار را جمع میکنیم. این کار همچنین تضمین میکند که گوروتینهای کارگر تمام شدهاند. روش دیگر برای منتظر ماندن چند گوروتین، استفاده از WaitGroup است. |
|
|
برنامهٔ در حال اجرا نشان میدهد که ۵ کار توسط کارگرهای مختلف اجرا میشوند. برنامه با وجود حدود ۵ ثانیه کار در مجموع، فقط حدود ۲ ثانیه طول میکشد، چون ۳ کارگر همزمان کار میکنند. |
|
|
مثال بعدی: WaitGroupها.