に入るルーチンから複数の結果を集約私はチャンネルのいくつかの方法があるかもしれません考えていたが、私はできません単一のアレイ
func (r *Runner) Execute() {
var wg sync.WaitGroup
wg.Add(len(r.pipelines))
for _, p := range r.pipelines {
go executePipeline(p, &wg)
}
wg.Wait()
errs := ....//contains list of errors reported by any/all go routines
}
ゴールーチンの一定量をオフスピン以下の機能を持っていますそれを理解しているようだ。チャネルを使用するには
// ...
for _, p := range r.pipelines {
go func(p pipelineType) {
if err := executePipeline(p, &wg); err != nil {
mu.Lock()
errs = append(errs, err)
mu.UnLock()
}
}(p)
}
、あなたがエラーをlistning別のゴルーチンを持つことができます。これを行うには
は 'LEN(r.pipelines)サイズのスライスを作成し'とそれらにすべての労働者の書き込みをしましょう対応するインデックス。 – zerkms
いくつかのチャンネルの結果をFan Inという名前のものに組み合わせるパターンがあります。そのパターンでアプローチを使用することができます(必ずしもパターン自体ではない)。 –