Green threadsとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Green threadsの意味・解説 

グリーンスレッド

(Green threads から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/25 22:51 UTC 版)

ナビゲーションに移動 検索に移動

グリーンスレッド: green threads)とは、コンピュータプログラミングにおいて、オペレーティングシステムではなく、ランタイムライブラリ仮想マシン (VM) によってスケジュールされるスレッドである。グリーンスレッドはネイティブのOSの機能に依存せずに並行性を実現するほか、カーネル空間ではなくユーザー空間で管理されるためネイティブスレッドがサポートされていない環境でも動作しうる。

グリーンスレッドの性能

マルチコアプロセッサのシステムでは、ネイティブスレッドの実装は処理を複数のプロセッサに割り当てることができる。これはグリーンスレッドの実装では不可能である。このような環境ではネイティブスレッドに明らかな利点がある。しかし、ユニプロセッサのシステムでは、最も効率のよいモデルが何なのか、いまだ明確な答えはない[1]。また、ネイティブスレッド(あるいはマルチプロセス処理)とグリーンスレッドを併用することはよく行なわれる。

Linuxカーネルを動作させたコンピュータのベンチマーク[要出典]では下記の点が明らかになった。

  • スレッドの起動と同期については、グリーンスレッドが、Linuxのネイティブスレッドの性能を遥かに上回る。
  • I/Oコンテキストスイッチについては、Linuxのネイティブスレッドが、わずかに良い性能を示す。

また、グリーンスレッドにおいてブロックするI/O処理を実行すると、他のすべてのグリーンスレッドをブロックする可能性がある。この問題を避けるため、グリーンスレッドを使うプログラムでは非同期I/O処理を行わなければならない。

Java 仮想マシンにおけるグリーンスレッド

Java 1.1では、グリーンスレッドが JVM の使用可能な唯一のスレッドモデルであった。グリーンスレッドはネイティブスレッドに対していくつか制限があるため、以降の Java のバージョンではネイティブスレッドを優先しグリーンスレッドをサポートしなくなった。

例外として低消費電力デバイス向けのオペレーティングシステムと Java 仮想マシンの中間と考えられるSquawk virtual machineがある。Squawk VM はネイティブコードを最小限の部分のみに用い、これらの最小部分を移行するためにグリーンスレッドを用いている。

その他の仮想マシンにおけるグリーンスレッド

仮想マシンを用いる言語処理系で、ネイティブスレッドではないグリーンスレッドと等価なスレッドを実装したものが存在する。 例えば:

The Erlang 仮想マシンは 'グリーンプロセス' と呼ばれるような機構を持っている。これはオペレーティングシステムのプロセスのようであるが(スレッドのように状態を共有しない)、Erlang Run Time System (erts) の範囲内で実装されている。(誤って)'グリーンスレッド'として参照されることがある。

GHC Haskell の場合、最初の割り当ての後、(変更可能な)一定の時間が経過するとコンテキストスイッチが発生する。GHC スレッドはひとつあるいは複数の OS のスレッド上で動作して、(GHC スレッドと OS スレッドが多:多の関係)SMP マシンでも利用できる各コアの上でコストのかかる OS スレッドを生成せずに並列処理を可能にしている。

Smalltalk の仮想マシンは評価の段階を考慮していない。しかし、VM は実行中のスレッドに対して 外部のシグナル(タイマーの時間切れ、I/Oが利用可能になった、など)で割り込むことができる。たとえば QKS Smalltalk では、評価の段階を考慮し、グリーンスレッドをサポートし、さらに優先度逆転を防いでいる。大半の Smalltalk 環境では、定期的に起床する高い優先度のプロセスがタイムシェアリングのプリエンプションをうまく実現している。

[
   [(Delay forMilliseconds: 50) wait] repeat
] forkAt: Processor highIOPriority

多くのグリーンスレッドの実装では、優先度逆転を防ぐ仕組みを持っていない。

参考文献

  1. ^ Comparative performance evaluation of Java threads for embedded applications: Linux Thread vs. Green Thread [1]
  2. ^ Ruby 1.8 の標準 C 実装では、スレッドをグリーンスレッドとして実装している。[2]
  3. ^ Concurrency and Python”. Dr. Dobb's Journal (2008年2月3日). 2008年7月12日閲覧。 “GIL は Python のすべてのクリティカルセクションを保護するために用いられているロックである。 そのため、仮に複数の CPU があっても、一度にひとつのスレッドだけしか Python 的な動作を行うことができない。
  4. ^ Stackless.com: About Stackless”. 2008年8月27日閲覧。 “ラウンドロビンスケジューラが組み込まれている。これはタスクレットを協調的にもプリエンプティブ的にもスケジュールすることができる

関連項目

外部リンク



「Green threads」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Green threads」の関連用語

Green threadsのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Green threadsのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのグリーンスレッド (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS