LoginSignup
13
12

More than 5 years have passed since last update.

goの並行処理パターンについてのリンク集

Posted at

はじめに

  • golangで並行処理を書く時に、参考にさせていただいているサイトのリンク集
  • 自分用のメモです

Advanced Go Concurrency 3 つのパターン - Block Rockin’ Codes

  1. loop を回して、定期的に外部サーバに GET を投げる
  2. 取得した結果を、 channel を経由して呼び出し側に渡す
  3. 呼び出し側から Close を呼ばれたら終了処理をする
  • Close() を channel を用いた形で実装
  • インターバル処理は、 time.Tick() を用いるこでイベントにできる
  • buffer からの取り出しは channel への書き込みに
  • nil channel

chanの使い方パターンメモ。 - GolangRdyJp

chanを扱う役割は5つある。
- makeする役(maker)
- writeする役(writer)
- readする役(reader)
- closeする役(closer)
- 破棄する役(GC)

  • パイプラインジョブパターン

Goでchannelがcloseしてるかどうか知りたい というアンチパターン - beatsync.net

さて、このタイトルを見てGoに詳しく賢明な読者の方々は「あぁまたこの話題だよ、Goでchannelがcloseしてるかどうか知りたいようなパターンはだいたい書いてるアプリの設計とかchannelの使い方が間違ってるんだからやめとけ」と眉をひそめるかもしれません。

  • closeしてるchannelに書き込むと死ぬ
  • closeしてるchannelをcloseすると死ぬ
  • nilなchannelに書き込むと永遠にブロックする
  • nilなchannelから読み込むと永遠にブロックする
  • closeしてないchannelに、データが来てない状態で読み込むとブロックする

Big Sky :: golang の channel を使ったテクニックあれこれ

  • 下記のサンプル
    • ポーリング
    • キューイング
    • ワーカー

Dispatcher-Workerのサンプル

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12