この記事の一部は機械翻訳を使ったよ
Golang シリーズ
Hello GoLang: https://blog.yexca.net/ja/archives/154
GoLang (var and const) 変数と定数: https://blog.yexca.net/ja/archives/155
GoLang (func) 関数: https://blog.yexca.net/ja/archives/156
GoLang (slice and map) スライス: https://blog.yexca.net/ja/archives/160
GoLang (OOP) オブジェクト指向: https://blog.yexca.net/ja/archives/162
GoLang (reflect) リフレクション: https://blog.yexca.net/ja/archives/204
GoLang (struct tag) 構造タグ: https://blog.yexca.net/ja/archives/205
GoLang (goroutine) ゴルーチン: この記事
GoLang (channel) チャンネル: https://blog.yexca.net/ja/archives/207
プロセス -> スレッド -> コルーチン
コルーチン (coroutine) は軽量スレッドとも呼ばれます。システム リソースを使い果たすことなく、数万のコルーチンを簡単に作成できます。複数のコルーチンは、スレッドに割り当てられたコンピューター リソースを共有します。
Go 言語は、ゴルーチン (goroutine) と呼ばれるコルーチンをネイティブにサポートしています。Go の並行性は、goroutine と channel を通じて実装されます。
goroutine を作成する
go
キーワードでゴルーチンを開始する
|
|
匿名関数の使用
もちろん、匿名関数を使用することもできます
|
|
匿名関数は戻り値に実体パラメータを持つこともできますが、goroutine の戻り値は channel を介して送信する必要があります。次の例では、実体パラメータのみを示しています。
|
|
退出
メインの goroutine が終了すると、他の動作中の goroutine も自動的に終了します。
ただし、runtime.Goexit()
を使用して、現在の goroutine の実行を直ちに終了することもできます (defer が実行されます)
|
|