タグ

channelに関するroid123のブックマーク (4)

  • Big Sky :: 簡単に goroutine の実行個数を制限する方法

    Go は簡単に軽量スレッドが起動できるのがウリなのだけど、その使い方が難しいと思われているきらいがある。 Goへの誤解について - GolangRdyJp よくGoで誤解されるポイントについて個人的な見解を書いておきます。 今回の記事は Goアドベントカレンダー2017 その3 の20日目の記事です。 使ってないパッケージがコンパイルエラーって面倒じゃね... http://golang.rdy.jp/2017/12/20/go-fact/ 慣れていない間は、処理を並行化する際に「どうやったら並行化できるんだ」が分からない事があるのだと思う。 Big Sky :: golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量に

    Big Sky :: 簡単に goroutine の実行個数を制限する方法
  • Go の channel 処理パターン集 | Hori Blog

    Hori Blogフリーランスでバックエンドエンジニアとして活動している Ryota Hori のブログです。 最近はテック系記事より雑記ブログ気味。 この記事は Go Advent Calendar 2017 の 1 日目の記事です。 Go の長所に goroutine による非同期処理がありますが、どうしても channel の取り回しで黒魔術化しがちです。少しでも闇を減らしていきたいので、 channel らへんの取り回しについてパターンをまとめました。チートシート的に使えれば嬉しいです。 Go の channel の基礎 入門資料として使いたいので、題に入る前にざっくり基礎を。 定義のパターン channel には capacity という概念があります。 capacity は channel 内でバッファリングしておける容量のことで、 capacity に空きが無い場合は送信側

    Go の channel 処理パターン集 | Hori Blog
  • Golangのnew()とmake()の違い - 逆さまにした

    この記事は Go (その3) Advent Calendar 2017 の5日目の記事です。 記事では、変数の宣言に用いられる組み込み関数new()とmake()の違いについてまとめます。 まとめ さっそくですが、違いを表にまとめます。 new(T) make(T) 対象 任意の型 slice, map, channelのみ 初期化 初期化しない(ゼロ値になる) 初期化する 返り値 *T T 対象と初期化について new()とmake()で、初期化しない/するの違いは、 slice, map, channelが、内部にデータ構造を持つことからきています。 以下にruntimeパッケージで、それぞれ型が定義されている箇所を引用します。 一番理解しやすいのが、sliceです。array(実データ), len, capを初期化してあげる必要があるため、make()が用意されています。 slic

    Golangのnew()とmake()の違い - 逆さまにした
  • golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする - at kaneshin

    golang で処理の高速化をするために goroutine/channel を使って並行処理にし、待ち時間を無駄にしないようにするのは言葉で表すのは簡単ですが、実際にパターンとして落としこむためには経験が必要だなと思うので、今回 Dispatcher-Worker として Job Queue を golang で実装する方法を紹介したいと思います。 この記事は mattn さんの Big Sky :: golang の channel を使ったテクニックあれこれ の次のステップとして読むことをオススメします。 mattn.kaoriya.net golang で作成したアプリケーションで多くのリクエストをアプリケーションが送受信する必要がある場合、高速に捌くために並行処理にして非同期化を図る場合を想定しています。 今回は get という関数でHTTPリクエストを実行して取得したデータのサ

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