|
|
@@ -88,8 +88,8 @@ func OnFailure(task Task) ExecutionOption {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func Single(task Task, opts ExecutionOption) Task {
|
|
|
- return Run(append([]ExecutionOption{Sequential(task)}, opts)...)
|
|
|
+func Single(task Task, opts ...ExecutionOption) Task {
|
|
|
+ return Run(append([]ExecutionOption{Sequential(task)}, opts...)...)
|
|
|
}
|
|
|
|
|
|
func Run(opts ...ExecutionOption) Task {
|
|
|
@@ -120,14 +120,17 @@ func executeParallel(ctx context.Context, tasks []Task) error {
|
|
|
|
|
|
for _, task := range tasks {
|
|
|
<-s.Wait()
|
|
|
- go func(f func() error) {
|
|
|
- if err := f(); err != nil {
|
|
|
- select {
|
|
|
- case done <- err:
|
|
|
- default:
|
|
|
- }
|
|
|
+ go func(f Task) {
|
|
|
+ err := f()
|
|
|
+ if err == nil {
|
|
|
+ s.Signal()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ select {
|
|
|
+ case done <- err:
|
|
|
+ default:
|
|
|
}
|
|
|
- s.Signal()
|
|
|
}(task)
|
|
|
}
|
|
|
|