Go言語・並行処理の基本を学ぶ。

もりぴ
もりぴ

Go言語の並行処理の基本を学びましょう!

Go言語の特徴のひとつとして「他のプログラミング言語よりも並行処理の実装が簡単」という点があげられます。

それでも、複雑な並行処理を行うためには覚えることも多いのが実情です。

しかし、Go言語の並行処理の基本からしっかりと理解していくことで、複雑な並行処理の実装も実現できます。

この記事は、当ブログの並行処理の基本をまとめたものです。

記事の上から読み進めていくことで、基本をしっかりと把握できるでしょう。

Goの並行処理・Goroutine入門

この記事は並行処理って何?という方でも読み進めていけるような記事内容となっており完全初心者対応です。

ですから、Go言語の並行処理を気持ちがひるむことなく学習していけるでしょう。

この記事で学べること!
  • Goroutineについて
  • Go言語の並行処理を簡単なプログラムで動きを確認できます

Goの並行処理を確実に終了する・sync.WaitGroup入門

先程の「Goroutine入門」で紹介したプログラムは、並行処理の動作を確認するだけのもので不完全なものです。

Go言語の並行処理を正常終了させるひとつの手段として、sync.WaitGroup があります。

sync.WaitGroup を実装したプログラムで、Goの並行処理をきちんと終了する動きを確認していきましょう。

プログラムで順を追って説明しているので、実際にコードをエディタで記述して動きを確認することで理解も深まっていきます。

この記事で学べること!
  • sync.WaitGroup について
  • Go言語の並行処理を確実に終了する sync.WaitGroup をプログラムで確認します

channel入門・まずはデータの送受信を理解しよう

Goroutine間のデータ送受信の役割を担うchannelについての超入門編となります。

この記事ではchannelを並行処理するプログラムで確認するのではなく、まずはchannelのデータ送受信と値の出力をしっかりと理解していきます。

ここをきちんと理解していないと、逆にこれから先の並行処理に関する記事を読んでも理解に苦しみますので飛ばさずに読んでほしいと思っています。

この記事で学べること!
  • channelについて
  • channelを使ったデータの送受信について
  • channelで注意したいバッファについて

並行処理でchannelを実装してみる

「channel入門」の内容を理解したのちに、並行処理でchannelを実装していきます。

簡単な並行処理のプログラムを紹介していますが、Go言語らしいプログラムを体感することができる内容です。

この記事で学べること!
  • channelを実装した並行処理について
  • for range を使用してchannelの値を取り出す
  • close() 関数について

select文を理解する

select 文は switch 文と記述が一緒ですが、select 文はchannelに関する制御構文です。

Goroutine / channel / select の3つは、プログラムをブロックさせずに正常終了させる最強の組み合わせです。

しっかりと理解していきましょう。

この記事で学べること!
  • select 文について
  • select 文を使用してchannelのブロック状態を回避するプログラムについて
  • 複数のgoroutineで select 文を使用するプログラムについて

Go言語の並行処理の基礎を身につけよう!

Go言語の並行処理の実装は、他のプログラミング言語では考えられないくらい簡単に実装できます。

それでも、覚えなければいけないことやパターンが多いのも確かです。

暗記するのではなく、実際にコードを書いてパターンを身に着けていきましょう。

タイトルとURLをコピーしました