本文へスキップ

グリーンスレッドとは?

ぐりーんすれっど

OSのネイティブスレッドを使わず、言語ランタイムやライブラリが管理する軽量なスレッドで、多数の並行処理を効率よく実現する仕組みです。

リースレッド(Green Thread)とは、オペレーティングシステムOS)のカーネルが管理するネイティブスレッドとは異なり、言語のランタイム仮想マシンライブラリが独自に管理する軽量な実行スレッドです。ユーザー空間(user space)でスケジューリングされるため、「ユーザーレベルスレッド」とも呼ばれます。

通常のOSスレッドは1つ作成するのに数MBのスタックメモリが必要で、スレッド数の増加とともにメモリ消費量が急増します。一方グリーンスレッドは初期スタックが数KB程度と非常に小さく、1プロセスで数万〜数百万単位での作成が可能です。

グリーンスレッドの特徴を整理すると以下になります。

  • 軽量性:メモリ消費が少なく大量に生成できる
  • ランタイム管理:OS非依存でスケジューリングが行われる
  • 協調的または先取的:スケジューリング方式は実装によって異なる
  • マルチコア活用の制限:実装によっては複数CPUコアを十分に使えない場合がある

Goのゴルーチン(goroutine)はグリーンスレッドの代表例で、OSスレッドにMPMマッピングで多重化されます。かつてのJavaやRuby(MRI)もグリーンスレッドを採用していた時期があります。現代では非同期プログラミングやコルーチンと組み合わせて、高い並行性を実現する基盤として活用されています。

使い方・例文

Goでgo func()と書くだけで新しいゴルーチン(グリーンスレッド)が起動し、数万のゴルーチンを同時に動かしても消費メモリは僅かで、WebサーバーやマイクロサービスのI/O集中処理に適しています。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語