A generic goroutine pool just like Python ThreadPoolExecutor.
Gool provides the following methods:
Submit
: Submit a task and return the result (if any).AsyncSubmit
: Submit a task and return a future of the result (if any), the future is actually the result channel.Map
: Submit a bundle of tasks and return the results in order (if any).AsyncMap
: Submit a bundle of tasks and return the futures of the results (if any), the futures are the result channels.
To use Gool, you need to define:
- Handler function:
handler func(A) R
, and - Argument:
arg A
With types A
and R
being arbitrary types.
You can also specify the number of workers numWorkers
and the task queue size cap
when creating a new pool.