Skip to content

mehditeymorian/koi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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