나는 다음과 같은 GNU 스몰 토크 스크립트를 실행저장 스레드
그것은 예상대로이 출력을 생성하고, 새로운 이미지 써stdout << 'Before'; nl.
ObjectMemory snapshot: 'image.im'.
stdout << 'After'; nl.
: 지금은 다시로드
Before
After
을 이미지 :
$ gst -I image.im
내가 일이 보여야하는데 어떻게 일이다 단어 After
이 인쇄되면 --- 원래 스크립트에 이미지가 저장된 지점부터 실행이 다시 시작됩니다. 무슨 실제로 일이 나는 단지 REPL을 얻을 것입니다.
분명히 이미지가 스크립트를 실행중인 스레드의 상태를 저장하지 않았거나 이미지가로드 될 때 스레드가 다시 생성되지 않습니다. 스몰 토크 이미지는 시스템의 전체 상태에 대한 스냅 샷을 포함하고 있다고 생각했습니다. 그렇다면 왜 이런 일이 일어나고 있습니까? (그리고이 작업을 할 수있는 방법이 있습니까?이 동작을 사용하고 싶습니다.)
음, 그렇지만 스레드가 다릅니다. --- 스몰 토크 스레드는 녹색 스레드 구현이며 전적으로 VM에서 구현됩니다. 이미지에서 스레드를 저장하고 복원 할 수 있습니다 (시도했습니다). 스크립트를 처리하는 스레드가 저장되지 않는 이유를 알고 싶습니다. –
스레드가 있지만 stdout에 연결할 수 없습니까? 아마도 REPL은 이미 소켓을 소유하고있을 것입니다. – dcorking
문제는 스레드가 아닙니다. ObjectMemory와 stdout 모두 객체 환상을 완벽하게 유지할 수 없습니다. –