2012-08-28 10 views
11

RPythonでPyPyインタプリタを実装したPyPy GILの部分ですか、それともtranslate.pyが自動的に追加するものですか?つまり、RPythonに自分の新しい言語インタープリタを書いてtranslate.pyを使って実行した場合、先験的にGILの対象になるのでしょうか、それとも私のインタプリタコードまでになりますか?PyPyのGILはどこですか?

答えて

10

GIL処理は、PyPyチェックアウトのモジュール/ thread/gil.pyによって挿入されます。これはオプションの翻訳機能であり、スレッドモジュールが有効な場合にのみ追加されます。つまり、RPython自体はスレッドセーフな言語(例えばC言語のようなもの)ではないので、オブジェクトを正しくロックする必要があるので、矛盾しないようにしてください。主な問題は、スレッド認識ガベージコレクタを提供することです。これは、現在使用しているものがスレッドセーフではなく、単にロックを追加するだけで、フリースレッドモデルから多くのメリットが除かれるからです。

乾杯、念のため fijal

+0

、Clojureの-Pyが新しいプロセスを生成し、アーランスタイルのメッセージを介して通信することによって、問題を回避得ているようです。 http://clojure-py.blogspot.com/2012/04/clojure-py-and-distributed-concurrency.html – lobsterism

関連する問題