Skip to Content
Go言語による並行処理
book

Go言語による並行処理

by Katherine Cox-Buday, 山口 能迪
October 2018
Beginner to intermediate
256 pages
3h 35m
Japanese
O'Reilly Japan, Inc.
Content preview from Go言語による並行処理

3章Goにおける並行処理の構成要素

本章では、Go言語に備わっている並行処理をサポートする充実した機能について紹介していきます。本章を終える頃には、構文や関数、パッケージとその機能に関する理解が深まっていることでしょう。

3.1 ゴルーチン(goroutine)

ゴルーチンはGoのプログラムでの最も基本的な構成単位です。したがって、それが何で、どのように動作するのかを理解することは重要です。事実、すべてのGoのプログラムには最低1つのゴルーチンがあります†1。それがメインゴルーチンです。これはプロセスが開始する際に自動的に生成され起動されます。ほぼすべてのプログラムで問題解決のために遅かれ早かれゴルーチンを使うことになるでしょう。ではゴルーチンとは一体何なのでしょうか。

[†1] 訳注:一般的にはガベージコレクションやソフトウェア割り込みの待ちのためゴルーチンが自動的に立ち上がりますが、その数や種類は状況によって異なります。

単純に言えば、ゴルーチンは他のコードに対し並行に実行している関数のことです(注意:必ずしも並列ではありません!)。ゴルーチンはgoキーワードを関数呼び出しの前に置くことで簡単に起動できます。

func main() {
    go sayHello()
    // 他の処理を続ける
}

func sayHello() {
    fmt.Println("hello")
}

無名関数でも動作します!次の例は先の例とまったく同じ処理を行っています。しかしながら、関数からゴルーチンを生成するかわりに、無名関数からゴルーチンを生成しています。

go func() {
    fmt.Println("hello")
}() // ❶
// 他の処理を続ける
  1. goキーワードを使うには無名関数を即値で呼び出さなければいけません。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

プログラミングC# 第8版

プログラミングC# 第8版

Ian Griffiths, 木下 哲也, 鈴木 幸敏
Javaパフォーマンス

Javaパフォーマンス

Scott Oaks, Acroquest Technology株式会社, 寺田 佳央, 牧野 聡
PythonによるWebスクレイピング 第2版

PythonによるWebスクレイピング 第2版

Ryan Mitchell, 黒川 利明, 嶋田 健志
UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

Jon Yablonski, 相島 雅樹, 磯谷 拓也, 反中 望, 松村 草也

Publisher Resources

ISBN: 9784873118468Other