Goroutine and Worker Manager
go get github.com/mehditeymorian/koi
// create a pond
pond := koi.NewPond()
// create a worker
worker := koi.Worker{
ConcurrentCount: CONCURRENT_RUNNING_GOROUTINE_FOR_THIS_WORKER,
QueueSize: REQUEST_QUEUE_SIZE,
Work: func(a any) any {
// do some work
return RESULT
},
}
// register worker to a unique id
err = pond.RegisterWorker("workerID", worker)
// add job to worker
// this is non-blocking unless the queue is full.
resultChan, err := pond.AddWork("workerID", requestData)
// read results from worker
for res := range resultChan {
// do something with result
}
Note: pond.AddJob
is non-blocking unless worker queue is full.
- Koi: Koi is an informal name for the colored variants of C. rubrofuscus kept for ornamental purposes.
- Pond: an area of water smaller than a lake, often artificially made.
- Generic KOI written by Parham