CommonLisp Scheme Part11
■ このスレッドは過去ログ倉庫に格納されています
0393ミミ
NGNGサンクとなる C 関数において、
コールバック開始時の継続をキャプチャしておきます。
また、「コールバック B のコンテキストである」という記録を
g_callbackContext グローバル変数に保持しておきます。
ここで、コールバック クロージャ A のサンクとなる C 関数から
OS 側に戻ろうとするとき、g_callbackContext を確認し、
それがコールバック A のコンテキストであれば、
そのまま OS 側に戻ります。
コールバック A のコンテキストでなければ、
そのコンテキストに対応する継続 (コールバック B 開始時にキャプチャしたもの)
を呼び出すことで、コールバック B のコンテキストを回復した上で
OS 側に戻ります。
少し問題なのは、コールバックの戻り値をどのように決定するかですが。。。
■ このスレッドは過去ログ倉庫に格納されています