28 Sep
2009
28 Sep
'09
21:07
Ultimately ##thread-interrupt! calls ##thread-int! in _thread.scm Thread-int! sets thread-result of interrupted thread to (lambda () (your-thunk) (##void)) and insert interrupted thread on run-queue. thread-result is passed as second argument to thread-restore! and if you look at ___JUMP_THREAD_RESTORE2 in gambit.h , the last step is a jump to this procedure. So it is executed in the interrupted thread. If interrupting thread and interrupted thread are the same, then it is just a call to the function.