Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pgetにみる並行処理でのエラーハンドリング / Concurrent error handl...

Udomomo
December 03, 2018

pgetにみる並行処理でのエラーハンドリング / Concurrent error handling in pget

Gopher道場#4での発表資料です。

Udomomo

December 03, 2018
Tweet

More Decks by Udomomo

Other Decks in Programming

Transcript

  1. 自己紹介 • どもも(@Udomomo) • サーバサイドエンジニア @ beBit ◦ 業務は主にJava •

    今年の夏にGolangを雰囲気でやったきり • 並行処理がわかるようになりたいと思い参加
  2. Context type Context interface { // Done returns a channel

    that is closed when this Context is canceled // or times out. Done() <-chan struct{} // Err indicates why this context was canceled, after the Done channel // is closed. Err() error // Deadline returns the time when this Context will be canceled, if any. Deadline() (deadline time.Time, ok bool) // Value returns the value associated with key or nil if none. Value(key interface{}) interface{} }
  3. Qiitaより かなり頑張ったのが error 処理です。分割ダウンロードの際、 goroutine は非 同期での処理になるので、もし一つの goroutine でエラーが起こった場合全て の

    goroutine を終了させなければいけません。そしてそのエラーの原因を取得 しなければいけないのですが、これが難しかった... これらはcontextを利用することで解決できました。 (https://qiita.com/codehex/items/d0a500ac387d39a34401)