gorutineについて少しずつまとめる(1)
どうもryusen33です。
今回は10月末に開催される予定のヒカルのgo(hikarie.go)#3のハンズオンで取り上げることになっているgorutineについて少しずつまとめていこうと思います。
・まずgorutineってなんですか
gorutine(読み方はゴルーチン)というのは複数の処理を並列に処理できる機能のようなものです。
@tenntennさんのスライドめっちゃ参考になります↓
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会 あとは
Amazon.co.jp: 基礎からわかる Go言語: 古川 昇: 本 を参考にしました。
これを実行すると
hello 0
hello 1
hello 2
hello 3
hello 4
fin
となり、func testが1~4までの数字を出力するのに4秒かかっていることから、その間func mainが呼ばれていないので、並列に処理していないことがわかります。
並列に処理したいですよね
並列に処理したいときは
go 並列に処理したい関数
と書くことができます。
やってみると
hello 0
hello 1
hello 2
fin
となります、前回のはhello 4 まで出力されていたのに、今回はfunc mainと func testを並行に処理しているので、4秒たってhello 4が出力される前に3秒で終了するfunc mainが終了してしまうので、hello 2までしか表示されないということです。
以上が簡単なごルーチンの解説です、簡単な、というだけあって、まだ続きがあります、それはまた次回に。