Go の並行処理: goroutine と channel の基本

言語

Go の並行処理は、軽量スレッドである goroutine と、値を受け渡す channel の2つが柱だ。「メモリを共有して通信する」のではなく「通信してメモリを共有する」という設計思想が表れている。

goroutine を起動する

関数呼び出しに go を付けるだけで、別の goroutine として並行に走る。

go
go func() {
    fmt.Println("別の goroutine で実行")
}()

channel で受け渡す

goroutine 間の値のやり取りは channel を通す。送受信がそのまま同期点になるので、ロックを直接書く場面を減らせる。

ゆべしま
フロントエンドエンジニア。型と開発体験の話が好き。週末は個人開発とコーヒー。