ほげほげ

プログラミング、英会話、ヨガ、料理などの備忘録など。

Goツアーを読んだ その3(最後)

Goツアーの最終章のConcurrency(並列処理)について読みました。 このあたりを見ると、Webアプリの開発言語も開発でますが、バッチ処理やデータ集計などもパフォーマンスを意識して記述していける言語な印象を受けました。

concurrency より

  • goroutine(ゴルーチン)はGOの並列処理のための軽量なスレッド
  • go fn() のようにgoをつけて関数を呼ぶことで実行する
  • チャネル型を使って値の送受信を行うとゴルーチンの同期が可能
  • ch := make(chan int)のように変数の宣言を行う
  • チャネルのバッファが詰まると、実行時にdeadlockが発生する
  • チャネルのクローズを判別するにはv,ok := <-chのokがfalseなこと
  • for i := range ch {}のように記述することでチャネルのクローズまでループする
  • selectステートメントの話があったけど、ちょっとイメージできなかったのでとばす
  • 排他制御のためのsync.MutexLock,Unlockメソッドで実現する