新プログラミング言語『Zero』を開発しました! 本サイトの記事数は「589」!!

【Go】ゴルーチン入門!並列処理が簡単にできるーチン!

             
  • 2020.03.21
  • Go
【Go】ゴルーチン入門!並列処理が簡単にできるーチン!
Advertisement

 

Go言語には「ゴルーチン」という、かっこいい名前の機能があります。

そもそもGoは並列処理が得意と言われていますが、その並列処理を簡単にしてくれるのがゴルーチンです。

ってことで今回は、Go言語のゴルーチンに入門してみました

 

僕のプロフィールはこちら

 

 

今回のソースコード

■GitHub

URL:「https://github.com/izumin0401/go-lang/blob/master/goroutine/goroutine.go」

 

 

まずはゴルーチンを使用せずに実行してみる

処理を1秒間停めるsleep関数を3回呼んでいるだけです。

 

 

ログを見た感じ、ちゃんと3秒かかっていますね。

 

 

ゴルーチンを使用して実行してみる

ゴルーチンを使用するには、関数呼び出し時に「go」を指定するだけです。

 

 

sleep関数を、ゴルーチンを使用して呼び出します。

 

 

実行すると、あら不思議。

sleep関数を呼んだ形跡が全くない。。

 

 

ゴルーチンの注意点

ゴルーチンを使用した場合、main関数の処理が終われば自動的にすべての処理が終了します

今回の例だと、ゴルーチンを使用したことで、sleep関数はmain関数の管理下ではなくなったイメージになります

これはチャネルを使うなどして回避できますが、今回はゴルーチンをいい感じに使ってみたいだけなので、一旦main関数の最後にsleep関数を仕込んでみます

 

 

Advertisement

 

ゴルーチンを使用して再度実行してみる

多めですが、一旦4秒スリープさせました。

 

 

main関数で多めに4秒停めているので全体は4秒かかっていますが、sleep関数はゴルーチンを使用したので、すべて51秒のタイミングで並列実行されています。

つまり、ゴルーチンを使用したことで並列処理が行われていることが確認できたわけです

おわり。

 

 

おすすめ本

これおすすめやで。

 

 

 

まとめ

ゴルーチンを使ったのは、ゴルーチンっていう名前がカッコよかったっていうだけです。

で、使ってみて分かったんですが、これ意外と便利ですね。

そもそも前処理待たなくてよくね?」みたいなケースってぼちぼちありますからね。

次はチャネルとか使ってみようかなと思いまする。

 

 

関連記事

以下の記事も合わせて読まれています。

Travelerを知らないの?