Koi logo KOI

Goroutine and Worker Manager

go version   license version

Installation

go get github.com/mehditeymorian/koi

Usage

// 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.AddJob("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.

Terminology

  • 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.

GitHub

View Github