mehditeymorian / koi

Goroutine and Worker Manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Goroutine and Worker Manager

License:Apache License 2.0


Languages

Language:Go 100.0%