プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

私がおすすめするプログラミング教材のまとめ【書籍と動画】

プログラミング言語 スクリプト言語 コンパイル言語 アプリ開発 サーバー、インフラ、セキュリティなど 機械学習系 ゲーム開発 データベース 子供向け デザイン その他 おまけ まとめ この記事では、様々なプログラミング教材を紹介しました。 ...

続きを見る

【Go言語入門】goroutineの使い方を説明します

投稿日:

記事の内容


この記事では、Go言語のgoroutineの使い方を説明します。

goroutine

スレッドを生成して並列処理を行う

上手くいかない例

スレッドを生成して並列処理を行おうとしたけど、実行されない場合。
スレッドが生成される前にプログラムが終了すると、goで指定した関数は実行されません。

sync.WaitGroupで実行終了まで待つ例

sync.WaitGroupとwg.Waitを使うことで、スレッドが実行されるまで、プログラムは終了することを待ってくれます。
そうすることで、goで指定した関数が実行されます。
wg.Add()は、並列処理の数を指定することができます。

channel

channelの基本的な使い方

channelを使うことで、関数が並行して動きます。
下記の処理を見れば、channelの処理が並行して動いていることがわかります。
対象となる関数に、「channel chan int」を渡して、「<-」というキーワードを使って、データの受け渡しをしています。

繰り返し処理の中でchannelを使う方法

繰り返し処理の中でchannelを使う場合は、処理が終わった後に、必ずcloseをしましょう。

ProducerとConsumerパターン

producerで受け取った値をconsumerで加工しています。
出力を見てみると、producerに渡した値がランダムに実行されているのが特徴的ですね。
「forの中」は順番に実行されていますが、それ以降の処理は順番になっていません。

例外処理を意識した場合は、inner関数とdeferを使って実装します。

fan-in fan-out

channelを3つ、繋げた場合の処理です。
出力結果の順番をよく確認しておきましょう。

channelとselect

今まで通りのチャネルの書き方。
チャネルの処理がブロッキングされていることがわかる。

チャネルの処理がブロッキングされない書き方。

selectとdefault

channel1とchannel2がない時には、defaultの処理が実行されます。
breakの仕方も覚えておきましょう。

sync.Mutex

一つのmapに2つのgoroutineを使って書き込むと、成功する時と失敗する時があります。

それを避けるためにsync.Mutexを使用します。

まとめ

この記事では、Go言語のgoroutineについて説明しました。

Good luck for your engineer life!

Go言語をより詳しく勉強したい人は、この記事を読んで下さい

Go言語の学習でおすすめの本と動画【2021年最新】

初心者向け 入門Goプログラミング 海外で評判がよい入門書の翻訳版です。 テンポよく学んでいけるのはいいのですが、翻訳が完全とは言えません。 プログラミング経験が浅い人にはいいと思います。 改訂2版 基礎からわかる Go言語 Go言語のバー ...

続きを見る


Rubyをより詳しく勉強したい人は、この記事を読んで下さい

Rubyの学習でおすすめの本と動画【2021年最新】

初心者向け【入門編】 スラスラ読める Rubyふりがなプログラミング ふりがなプログラミングシリーズのRuby版です。 文句なしに、やさしい内容なので、これからプログラミングを始めてみようという人は、この本から始めると良いかもしれません。 ...

続きを見る


Ruby on Railsをより詳しく勉強したい人は、この記事を読んで下さい

Ruby on Railsの学習でおすすめの本と動画【2021年最新】

初心者向け Ruby on Rails 5.0 初級① Ruby on Railsは、基本的には初心者向けではありません。 ただし、これらの本は、比較的、簡単に書かれています。 プログラミング経験が浅くてRailsを勉強したい人は、この本か ...

続きを見る


Javaをより詳しく勉強したい人は、この記事を読んで下さい

Javaの学習でおすすめの本と動画【2021年最新】

初心者向け 2週間でJava SE Bronzeの基礎が学べる本 Java SE Bronzeをこれから取得しようという人向けの書籍です。 14日で区切られている各章は、図を積極的に取り入れてわかり易いです。 職業訓練についていけなくて参考 ...

続きを見る


Gitをより詳しく勉強したい人は、この記事を読んで下さい

Gitの学習でおすすめの本と動画【2021年最新】

漫画?でわかりやすく学ぶ入門書の定番 わかばちゃんと学ぶGit使い方入門 Gitの入門書の定番と言っても差し支えありません。 絵や図で解説している本なので、わかりやすく頭に入ってきます。 サルでもわかるGit入門 Gitの解説サイトが書籍化 ...

続きを見る


ErlangとElixirをより詳しく勉強したい人は、この記事を読んで下さい

ErlangとElixirの学習でおすすめの本と動画【2021年最新】

Erlang すごいErlangゆかいに学ぼう Erlangの入門書です。 言語の特徴が具体的なコード例と一緒に解説されています。 Erlangらしい関数型言語の良さがわかる内容です。 プログラミングErlang Erlangの強みである並 ...

続きを見る

関連コンテンツ

-Go, プログラミング

Copyright© プログラミング道場 , 2021 All Rights Reserved Powered by AFFINGER4.