taskpool
For macOs
$ brew install go-task/tap/go-task
$ brew install golangci-lint
$ go install github.com/oligot/go-mod-upgrade@latest
$ brew install jq
Table of contents
Installation
go get -u github.com/arielsrv/taskpool
⚡️ Quickstart
package main
import (
"github.com/arielsrv/taskpool"
"log"
"math/rand"
"runtime"
"time"
)
func main() {
// generics task, return error is mandatory, @todo: fire and forget
var task1, task2, task3 *task.Task[int]
tb := &task.Builder{
MaxWorkers: runtime.NumCPU() - 1,
}
start := time.Now()
tb.ForkJoin(func(c *task.Awaitable) {
task1 = task.Await[int](c, GetNumber)
task2 = task.Await[int](c, GetNumber)
task3 = task.Await[int](c, GetNumber)
})
log.Println(task1.Result)
log.Println(task2.Result)
log.Println(task3.Result)
end := time.Since(start)
log.Println(end)
}
func GetNumber() (int, error) {
value := rand.Int()
time.Sleep(time.Millisecond * 1000)
return value, nil
}