Tags: スレッド, ライブラリ, portable-threads
タイムアウトについてはANSI仕様外ですが、大抵の処理系がwith-timeoutや、類似したものを持っています。 下記では、CLiki:Portable-Threadsを利用しています。
;; 書式 (with-timeout (seconds &body timeout-body) &body timed-body)
(import 'portable-threads:with-timeout) ;; 3秒でタイムアウト (with-timeout (3 (print "時間切れ!")) (if (y-or-n-p "スフィンクスは、なぞなぞに答えられなくて死んだ~%") (print "はずれ") (print "はずれていない"))) ;-> スフィンクスは、なぞなぞに答えられなくて死んだ ; (y or n) ; ... 3秒経過 ; "時間切れ!" ;=> "時間切れ!"