goroutine を複数起動してどれか一つがエラーになった時の終了する
{ broadCastChan := make(chan struct{}, 1) stopChan := make(chan struct{}, len(workers)) var wg sync.WaitGroup for _, worker := range workers { wg.Add(1) go func(worker *Worker) { defer wg.Done() err := worker.Work(broadCastChan) log.Println(err) stopChan <- struct{}{} }(worker) } <-stopChan close(broadCastChan) wg.Wait() }
stopChan に <- struct{}{} する際に block しないように worker 数を capacity に指定。 stopChan で一つでも受け取ったら broadCastChan を close して worker の中で
{ for { select { case <-broadCastChan: // exit return default: // do something } } }
みたいな感じで待っておいて各 worker を終了。
wg.Wait で全ての worker が終わるまで待つ。
こんな感じかなぁ。
青い花 1-8
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2014/04/01
- メディア: Kindle版
- この商品を含むブログを見る
娘の家出 1
- 作者: 志村貴子
- 出版社/メーカー: 集英社
- 発売日: 2014/05/09
- メディア: コミック
- この商品を含むブログ (7件) を見る
砂糖菓子の弾丸は撃ちぬけない
- 作者: 桜庭一樹
- 出版社/メーカー: KADOKAWA / 角川書店
- 発売日: 2012/10/01
- メディア: Kindle版
- クリック: 36回
- この商品を含むブログを見る
あたしは、暴力も喪失も痛みもなにもなかったふりをしてつらっとしてある日大人になるだろう。友達の死を若き日の勲章みたいに居酒屋で飲みながら憐情たっぷりに語るような腐った大人にはなりたくない。胸の中でどうにも整理できない事件をどうにもできないまま大人になる気がする。だけど十三歳でここにいて周りには同じようなへっぽこ武器でぽこぽこへんなものを撃ちながら戦ってる兵士たちがほかにもいて、生き残った子と死んじゃった子がいたことはけして忘れないと思う