Skip to content

nbys/asyncwork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

asyncwork

Execute tasks concurrently in golang.

Install

go get -u github.com/nbys/asyncwork/worker

Prepare the tasks

The task is a function with following signature:

type TaskFunction func() interface{}

It can be declared like this:

task1 := func() interface{} { time.Sleep(time.Second * 4) fmt.Println("very slow function") return "I'm ready" }

All task have to be collected into the slice:

tasks := []worker.TaskFunction{task1, task2, task3}

Use context.Context to stop running goroutines

ctx, cancel := context.WithCancel(context.Background()) defer cancel()

Execute the tasks

Start task execution:

resultChannel := worker.PerformTasks(ctx, tasks)

Get result from completed tasks

Loop over the channel with results.

for result := range resultChannel { switch result.(type) { case error: fmt.Println("Received error") cancel() return case string: fmt.Println("Here is a string:", result.(string)) case int: fmt.Println("Here is an integer:", result.(int)) default: fmt.Println("Some unknown type ") } }

About

Run tasks concurrently in golang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages