conexec
A concurrent toolkit to help execute funcs concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking and uses goroutine pool to improve efficiency
About conexec
Introduction
conexec is a concurrent toolkit to help execute functions concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking.
How to use
Generally it can be set as a singleton to save memory. There are some example to use it.
Normal Actuator
Actuator is a base struct to execute functions concurrently.
opt := &Options{TimeOut:DurationPtr(time.Millisecond*50)}
c := NewActuator(opt)
err := c.Exec(
func() error {
fmt.Println(1)
time.Sleep(time.Second * 2)
return nil
},
func() error {
fmt.Println(2)
return nil
},
func() error {
time.Sleep(time.Second * 1)
fmt.Println(3)
return nil
},
)
if err != nil {
// ...do sth
}
Pooled Actuator
Pooled actuator uses the goroutine pool to execute functions. In some times it is a more efficient way.
opt := &Options{TimeOut:DurationPtr(time.Millisecond*50)}
c := NewPooledActuator(5, opt)
err := c.Exec(...)
if err != nil {
// ...do sth
}
Use custom goroutine pool
c := NewPooledActuator(5).WithPool(pool)
Simply exec using goroutine
done := Exec(...)
if !done {
// ... do sth
}
Frequently Asked Questions
What is conexec?
conexec is a Goroutines library for the Go programming language. A concurrent toolkit to help execute funcs concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking and uses goroutine pool to improve efficiency
How do I install conexec?
Install conexec with the Go module system using `go get ITcathyh/conexec`. Check the repository for the current installation instructions.
What category does conexec belong to?
conexec is listed under Goroutines, specifically Goroutines.