グローバルインタプリタロック(英: Global Interpreter Lock, GIL)とは、プログラミング言語のインタプリタのスレッドによって保持されるスレッドセーフでないコードを、他のスレッドと共有してしまうことを防ぐための排他 ロックである。インタプリタのひとつのプロセスごとに必ずひとつの GIL が存在する。

プログラミング言語においてグローバルインタプリタロックを採用した場合、複数のスレッドを持つインタプリタプロセスの並行性を制限してしまう。プロセスをマルチプロセッサのマシンで実行させた場合、ほとんどあるいはまったく速度の向上が見られない。

こうしたロックを採用する理由として、下記のものがある。

  • シングルスレッドのプログラムの速度向上(すべてのデータ構造に対して別々にロックを獲得・解放する必要がなくなる)
  • 通例スレッドセーフではないC言語のライブラリとの結合が容易である。

インタプリタがひとつずつ GIL を持つため、GIL を持つ言語で書かれたアプリケーションは、完全な並列性を得るため別々のプロセス(すなわちインタプリタ)を持つ必要がある。

グローバルインタプリタロックを実装した言語には、下記のものがある:

  • Python(正確には C言語による実装であるCPython)
  • Ruby(グローバルVMロックと呼ばれている)

脚注

関連項目

  • グリーンスレッド

インターロック1P1000160 « こんな作業できます! さいたま市 鍵のキーテックワン

新商品「インスタントロック」 職人さんのお助けブログ【職人見聞録】

IR ストップロック PRODUCTS アドセック株式会社

No.2200 インテグラルロック取替錠 AGENT シルバー色 (付属キー本数)3仕様 バックセット100mm適合扉厚25~43mm

安全インターロック装置 B1P CAYS