Skip to content

Latest commit

 

History

History
57 lines (45 loc) · 1.62 KB

README.md

File metadata and controls

57 lines (45 loc) · 1.62 KB

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

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.

Generic Version of KOI