srfi.226
- 制御機構 ¶このSRFIは、Schemeの根本的な概念である継続や動的環境のセマンティクスを、
マルチスレッドプログラムや限定継続をサポートできるように拡大するものです。
call/cc
やdynamic-wind
といったいくつかのR7RSプリミティブは、
拡大されたセマンティクスに一致するように拡張されます。
スレッドAPIはSRFI-18およびGaucheのスレッドAPIとほぼ互換です (gauche.threads
- スレッド参照)。
拡大された機能はランタイムと固く結びついているので、 このSRFIのAPIは主にGaucheの組み込みとして実装されています。 この節では、SRFI-226のAPIの一覧とドキュメントへのポインタを示します。
0.9.13の時点では、GaucheはSRFI-226の一部のみを実装しています。 将来のリリースで全てをカバーする予定です。
SRFI-226はR7RSの上位互換になっています。
ただ、GaucheはGaucheでR7RSの制御機構をマルチスレッド向けに拡張していて、
SRFI-226と非互換であった部分があります。
徐々にSRFI-226互換に移行してゆきますが、後方互換なインタフェースも提供します。
srfi.226
をuseした場合はSRFI-226の振る舞いになります。
以下が、SRFI-226のAPIのリストとGaucheのサポート状況です。
call-with-non-comosable-continuation
call-with-composable-continuation
Not implemented yet.
call-with-current-continuation
call/cc
See 継続.
call-in-continuation
call-in
Not implemented yet.
call-with-continuation-barrier
Not implemented yet.
continuation-prompt-available?
Not implemented yet.
dynamic-wind
See 継続.
unwind-protect
See 上位レベルの例外処理機構.
shift-at
reset-at
Not implemented yet.
shift
reset
See gauche.partcont
- 部分継続. However, current implementation
of shift
/reset
hasn’t integrated to SRFI-226 model
yet.
continuation?
non-composable-continuation?
Not implemented yet.
with-continuation-mark
with-continuation-marks
call-with-immediate-continuation-mark
continuation-marks
current-continuation-marks
continuation-mark-set?
continuation-mark-set->list
continuation-mark-set-first
See 継続マーク.
continuation-mark-set->list*
continuation-mark-set->iterator
Not implemented yet.
make-continuation-mark-key
continuation-mark-key?
See 継続マーク.
make-parameter
make-thread-parameter
See パラメータ. Gauche’s built-in make-parameter
works
in a compatibility mode for now. If you use srfi.226
,
make-parameter
works as specified in SRFI-226.
parameter?
See パラメータ.
parameterize
See パラメータ. Gauche’s built-in parameterize
works
in a compatibility mode for now. If you use srfi.226
,
make-parameter
works as specified in SRFI-226.
current-parameterization
parameterization?
call-with-parameterization
See パラメータ.
temporarily
See 動的状態.
define-fluid
define-thread-fluid
define-fluidified
fluid-let
fluid-let*
fluid-parameter
Not implemented yet.
call-with-initial-continuation
Not implemented yet.
delay
promise?
force
make-promise
See Delayとforceとlazy. Gauche’s built-ins are SRFI-226 compatible.
with-exception-handler
current-exception-handler
exception-handler-stack
See 下位レベルの例外処理機構. Gauche’s built-ins are SRFI-226 compatible.
raise
raise-continuable
See 例外の通知.
guard
See 上位レベルの例外処理機構.
¶meterization
make-parameterization-condition
parameterization-condition?
condition-parameterization
Not implemented yet.
&continuation-marks
make-continuation-marks-condition
continuation-marks-condition?
condition-continuation-marks
Not implemented yet.
&exception-handler-stack
make-exception-handler-stack-condition
exception-handler-stack-condition?
condition-exception-handler-stack
Not implemented yet.
time?
current-time
seconds+ time
See 時間.
&thread
make-thread-condition
thread-condition?
&uncaught-exception
make-uncaught-exception
uncaught-exception-condition?
uncaught-exception-condition-reason
&thread-already-terminated
make-thread-already-terminated-condition
thread-already-terminated-condition?
&thread-timeout
make-thread-timeout-condition
thread-timeout-condition?
&thread-abandoned-mutex
make-thread-abandoned-mutex-condition
thread-abandoned-mutex-condition?
&concurrent-modification
make-concurrent-modification-violation
concurrent-modification-violation?
See スレッド例外.
make-thread
thread?
current-thread
thread-start!
thread-yield!
thread-sleep!
thread-terminate!
thread-schedule-terminate!
thread-join!
make-mutex
mutex?
mutex-state
mutex-lock!
mutex-unlock!
See Mutex.
make-condition-variable
condition-variable?
condition-variable-signal!
condition-variable-broadcast!
See 条件変数.
make-thread-local
thread-local?
tlref
tlset!
See スレッドローカル領域.
current-interrupt-level
disable-interrupts!
enable-interrupts!
with-interrupts-disabled
with-interrupts-enabled
thread-interrupt!
Not implemented yet.