グリーンスレッド(ぐりーすすれっど)
最終更新:2026/4/27
グリーンスレッドは、OSではなくプログラミング言語のランタイムが管理する軽量なスレッドである。
別名・同義語 goroutineコルーチン
ポイント
グリーンスレッドは、Goランタイムによって管理され、goroutineの実行基盤となっている。これにより、多数の並行処理を効率的に実行できる。
概要
グリーンスレッドは、ユーザーレベルで実装されたスレッドであり、カーネルレベルのスレッドと比較してコンテキストスイッチのコストが低いという特徴を持つ。Go言語におけるグリーンスレッドは、goroutineとして知られており、Goランタイムによって効率的に管理される。
歴史
グリーンスレッドの概念は、1990年代から存在していたが、Go言語の登場によって広く知られるようになった。Go言語の設計者たちは、並行処理の容易さと効率性を重視し、グリーンスレッドをgoroutineとして採用した。
実装
Go言語のグリーンスレッド(goroutine)は、M:N スケジューリングモデルを採用している。これは、複数のgoroutineが少数のOSスレッド上で実行されることを意味する。これにより、OSスレッドの作成・破棄のオーバーヘッドを削減し、多数のgoroutineを効率的に実行できる。
特徴
- 軽量性: OSスレッドよりも少ないリソースで動作する。
- 効率性: コンテキストスイッチのコストが低い。
- 並行性: 多数のgoroutineを同時に実行できる。
- Goランタイムによる管理: goroutineのスケジューリングや管理はGoランタイムが行う。
利用例
グリーンスレッド(goroutine)は、ネットワークサーバー、並列処理、並行データ処理など、様々な場面で利用されている。Go言語の標準ライブラリには、goroutineを利用した並行処理を容易にするための機能が豊富に用意されている。