@hasantalksدکتر احد حسن
مهندس نرم افزار ، https://kickbackapps.com
پیوند پروژه: https://github.com/Joker666/goworkerpool
همزمانی در Golang و WorkerPool: [Part 1]
Goroutines و کانال ها ساختارهای زبانی قدرتمندی هستند که golang را به یک زبان همزمان قدرتمند تبدیل می کنند. در قسمت اول مقاله ، ما در مورد چگونگی ایجاد یک کارگروه برای بهینه سازی عملکرد همزبانهای گلنگ یعنی محدود کردن استفاده از منابع ، تحقیق کردیم. اما این یک مثال ساده برای نشان دادن چگونگی ادامه کار بود.
در اینجا ، ما با توجه به آموخته های قسمت اول ، یک راه حل قوی خواهیم ساخت تا بتوانیم از این راه حل در هر برنامه ای استفاده کنیم. چند راه حل در اینترنت با معماری پیچیده با استفاده از توزیع کنندگان و همه وجود دارد. در واقع ، ما به آن نیازی نداریم ، ما می توانیم همه کارها را با استفاده از یک کانال مشترک انجام دهیم. بیایید ببینیم که چگونه می توانیم آن را در اینجا بسازیم
معماری
در اینجا ما یک بسته عمومی کارگر ایجاد می کنیم که می تواند وظایف مربوط به کارگران را براساس همزمانی مورد نظر انجام دهد. بیایید ساختار فهرست را ببینیم.
workerpool
├── pool.go
├── task.go
└── worker.go
workerpool
فهرست در پوشه اصلی پروژه قرار دارد. بریم سراغ چی
Task
است.
Task
واحد واحدی از کار است که باید پردازش شود.
Worker
یک تابع ساده کارگر است که مسئولیت اجرای …