2012-08-28 68 views
11

RPython中PyPy解釋器實現的PyPy GIL部分,還是translate.py自動添加的東西?也就是說,如果我要在RPython中編寫我自己的新語言解釋器,並通過translate.py運行它,它是否會先行服從GIL,還是由我的解釋器代碼決定?PyPy中的GIL在哪裏?

回答

10

GIL處理由module/thread/gil.py插入到您的PyPy結帳中。這是一個可選的翻譯功能,只有在啓用線程模塊時纔會添加。也就是說,RPython本身不是線程安全的語言(比如C),所以你需要小心自己正確鎖定對象,所以它們不會出現不一致。主要問題是提供一個線程感知的垃圾收集器,因爲我們現在使用的垃圾收集器不是線程安全的,只需添加一個鎖就可以從免費線程模型中移除很多好處。

乾杯, fijal

+0

只是爲了記錄在案,似乎Clojure的-PY已經產卵新的流程,並通過二郎式消息傳遞解決此問題得到。 http://clojure-py.blogspot.com/2012/04/clojure-py-and-distributed-concurrency.html – lobsterism