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

プログラミング道場

私がオススメするプログラミング教材です

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

目次1 これからエンジニアになりたい人へ向けた本2 プログラミング言語3 アプリ開発4 サーバー、インフラ、セキュリティなど5 機械学習系6 ゲーム開発7 データベース8 デザイン9 組織作り10 自作シリーズ11 その他12 おまけ これ ...

続きを見る

【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言語の学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 初心者向け3 中級者向け4 上級者向け 動画教材 【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語) ▼ 興味がある方は、画像をクリック Golang(Go言語 ...

続きを見る


Rubyをより詳しく勉強したい人には、この記事がオススメです

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

▼ Ruby on Railsについては、この記事で紹介しています 目次1 動画教材2 初心者向け【入門編】3 中級者向け4 上級者向け 動画教材 "ちゃんと" Ruby を学ぼう! ー オブジェクト指向機能ってなんだ? ▼ 興味がある方は ...

続きを見る


Ruby on Railsをより詳しく勉強したい人には、この記事がオススメです

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

目次1 動画教材2 初心者向け3 中級者向け 動画教材 Ruby Metaprogramming - Complete Course ▼ 興味がある方は、画像をクリック 英語版です。 Rubyのメタプログラミングについて学べます。 Ruby ...

続きを見る


Javaをより詳しく勉強したい人には、この記事がオススメです

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

▼ Spring Bootの勉強をしたい人には、この記事がおすすめです 目次1 動画教材2 初心者向け3 中級者向け 動画教材 動画でわかる Java入門講座 基本~オブジェクト編 ▼ 興味がある方は、画像をクリックして下さい 「初心者向け ...

続きを見る


Gitをより詳しく勉強したい人には、この記事がオススメです

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

目次1 動画教材2 漫画?でわかりやすく学ぶ入門書の定番3 初心者向け4 中級者向け5 上級者向け 動画教材 もう怖くないGit!チーム開発で必要なGitを完全マスター ▼ 興味がある方は、画像をクリック Gitの基本コマンド、ブランチやマ ...

続きを見る


ErlangとElixirをより詳しく勉強したい人には、この記事がオススメです

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

目次1 Erlang2 Elixir Erlang プログラミングErlang Erlangの強みである並列化と分散化を勉強するのに適した本です。 OTP(Open Telecom Platform)を学ぶには、「すごいErlangゆかいに ...

続きを見る

-Go, プログラミング

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