タグ

ブックマーク / qiita.com/tfutada (2)

  • Go言語の並行処理デザインパターン by Rob Pike 後編 - Qiita

    前編の続きです。 前回のデザパタを、Google検索を例に適用しましょうという話。 Google 1.0 まずは並行処理が入っていない、そのまま逐次処理の例です。 ダミーの検索関数type Search func(query string) Resultを返す、fakeSearch関数を作っておきます。 ダミーの検索関数Searchは、time.Sleepで一定時間スリープして、検索しているフリをします。 package fake import ( "fmt" "math/rand" "time" ) var ( Web = fakeSearch("web") Image = fakeSearch("image") Video = fakeSearch("video") ) type Search func(query string) Result func fakeSearch(kind

    Go言語の並行処理デザインパターン by Rob Pike 後編 - Qiita
    mattn
    mattn 2016/06/03
  • Go言語の並行処理デザインパターン by Rob Pike 前編 - Qiita

    少し古いですが、Rob Pikeの並行処理デザインパターンのビデオで取り上げられたコードまとめです。 オリジナルのソースコードはこちらで見れます。 Generator ジェネレータ package main import ( "fmt" "math/rand" "time" "runtime" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) rand.Seed(time.Now().UnixNano()) c := boring("boring!") // Function returning a channel. for i := 0; i < 5; i++ { fmt.Printf("You say: %q\n", <-c) } fmt.Println("You're boring: I'm leaving.") } func

    Go言語の並行処理デザインパターン by Rob Pike 前編 - Qiita
    mattn
    mattn 2016/06/03
  • 1