2012-08-28 6 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의-평가 새로운 프로세스를 산란 및 얼랑 스타일의 메시지를 통해 통신하여 문제를 해결받은 것 같다. http://clojure-py.blogspot.com/2012/04/clojure-py-and-distributed-concurrency.html – lobsterism