はじめに

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

 

    自分用のメモです

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

loop を回して、定期的に外部サーバに GET を投げる
取得した結果を、 channel を経由して呼び出し側に渡す
呼び出し側から 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のサンプル

    • Goで毎分100万リクエストを処理する | プログラミング | POSTD

 

    • golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする – at kaneshin

Re: golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする – okzkメモ

上の記事を受けて、worker構造体なんて定義しなくてもforループでよくね、という内容

广告
将在 10 秒后关闭
bannerAds