the gopher of gopher

gopherの中のgopherを目指すブログです

gorutineについて少しずつまとめる(1)

どうもryusen33です。

今回は10月末に開催される予定のヒカルのgo(hikarie.go)#3のハンズオンで取り上げることになっているgorutineについて少しずつまとめていこうと思います。

・まずgorutineってなんですか

gorutine(読み方はゴルーチン)というのは複数の処理を並列に処理できる機能のようなものです。

@tenntennさんのスライドめっちゃ参考になります↓

Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会 あとは

Amazon.co.jp: 基礎からわかる Go言語: 古川 昇: 本 を参考にしました。

gistb328cd823d30724b214c

これを実行すると

hello 0

hello 1

hello 2

hello 3

hello 4

fin

となり、func testが1~4までの数字を出力するのに4秒かかっていることから、その間func mainが呼ばれていないので、並列に処理していないことがわかります。

並列に処理したいですよね

並列に処理したいときは

go 並列に処理したい関数

と書くことができます。

gist14cb7a02d61652f1b332

やってみると

hello 0

hello 1

hello 2

fin

となります、前回のはhello 4 まで出力されていたのに、今回はfunc mainと func testを並行に処理しているので、4秒たってhello 4が出力される前に3秒で終了するfunc mainが終了してしまうので、hello 2までしか表示されないということです。

以上が簡単なごルーチンの解説です、簡単な、というだけあって、まだ続きがあります、それはまた次回に。