همزمانی در Golang و WorkerPool [Part 2]

عکس پروفایل نویسنده

@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

یک تابع ساده کارگر است که مسئولیت اجرای …

سئو PBN | خبر های جدید سئو و هک و سرور