>>559
もし実装言語がCなら、標準ライブラリのsetjmp/longjmpを使って、
インタプリタ側とコールバック関数側をコルーチンの形式で
交互にジャンプさせることで、擬似的な並行処理を実現するんだろうね。
もちろんジャンプバッファ(jmp_buf)は2個必要になる。

Rubyのスレッド(平行処理)も、インタプリタ内部ではスレッド単位に
ジャンプバッファを持って、スレッドのコンテキストを管理してる。
以下は、RHG(Ruby Hacking Guide)の該当する章へのリンク。
・ttp://www.loveruby.net/ja//rhg/book/thread.html

もし仮想マシンで実行しているなら、(setjmp/longjmpに相当する)
実行コンテキストを保存/復帰させる命令を仮想マシンの仕様に追加する。
というか、開発中の言語処理系が「ホントウ」に継続(countinuation)を
サポートしているなら、継続で互いのコンテキストを切り替え続ければいいはずなんだが....