タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

channelに関するmfhamのブックマーク (6)

  • Comparing Values in Go

  • GoのChannelを使いこなせるようになるための手引 - Qiita

    Go使いたくなる理由の一つに、マルチスレッドプログラミング的なものを高速な言語で安全に実装したいというのがある。Goにおいてそれを支えるのが、自前で実装した軽量スレッドといえるgoルーチンと、mutexなどのロックの代わりに使えるChannelという概念だ。 実際に実装するときに、Goルーチンは難しくないが、Channelを使うのは割と知識と経験が必要なのでここでは、Channelについてすこし詳しく書いてみる。 Message Passing まずは理論から。 Goのチャネルなどのロックを使わない方法の並行処理はMessage Passingと呼ばれている。 以下の英語Wikipediaにあるように数学的な理論にもなっているしっかりした枠組み。 ErlangのActor Modelなどもこの仲間。GoのチャネルとActor Modelは、実は、同等の概念で表現方法が違うだけらしい。 (

    GoのChannelを使いこなせるようになるための手引 - Qiita
  • Goroutineと channelから はじめるgo言語

    1. Goroutineと Channelから はじめるGo言語 ver. 5 2015/11/26(木) @「最近、Go言語始めました」の会 The Go gopher was designed by Renee French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. 2. アジェンダ ● 自己紹介 ● Goとは? ● Goroutineの基GoroutineとChannel ● 複数のChannelを扱う ● ファーストクラスオブジェクト ● 単方向のChannel ● for-selectパターン

    Goroutineと channelから はじめるgo言語
  • Goでchannelがcloseしてるかどうか知りたい というアンチパターン

    そういえば金沢に行って来た話の2〜4日目をかいてる途中で2ヶ月くらい経ったことに気付きましたが、まぁその話はおいておいて今日はGoの話です。 さて、このタイトルを見てGoに詳しく賢明な読者の方々は「あぁまたこの話題だよ、Goでchannelがcloseしてるかどうか知りたいようなパターンはだいたい書いてるアプリの設計とかchannelの使い方が間違ってるんだからやめとけ」と眉をひそめるかもしれません。まぁちょっとまって! オレもそうなんじゃないかなぁという気はしているし、ハマリどころがありそうということはうすうす分かってるけど一応調べて考えてみてもいいじゃないか。 結局の所調べて「こうすればいいね!」ってことは分かったんですが、それも破綻する場合があるので、アンチパターンだなぁと思いつつこの記事を書くことにしました。 まずGoのchannelのナイーブさを再確認する そもそもGoのchan

    Goでchannelがcloseしてるかどうか知りたい というアンチパターン
  • goroutine と channel を使った並行処理のパターン - Qiita

    Go 言語では goroutine と channel を利用して, 並行処理を記述することができる. ここではいくつかの並行処理のパターンにおける Go 言語による実装をまとめてみる. 独立した処理を並行に進める go キーワードの直後に実行したい関数の呼び出し式を記述すると, 新しく生成された goroutine 上で実行される // Run another goroutine independently go func() { log.Println("another goroutine") }() log.Println("the main goroutine") 別の並行処理単位から値を受け取る channel の生成には組み込み関数の make を利用する 値を送信したい箇所では channel <- (値) のように記述する 値を受信したい箇所では <-channel のよう

    goroutine と channel を使った並行処理のパターン - Qiita
  • 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
  • 1