スレッドを作成したり待機することができます。スレッドを直接exitすることはできませんがカンレントスレッドは暗黙にexitでき、他のスレッドはシグナルを受け取ることができます。
functionを呼び出す新たなスレッドの実行を作成する。functionのリターン時にスレッドはexitする。
新たなスレッドは効力をもつローカル変数のバインディングが何もない状態で作成される。新たなスレッドのカレントバッファーはカレントスレッドから継承される。
nameでスレッドに名前を与えることができる。これはデバッグと情報的な用途だけに使用される名前であり、Emacsにとって意味はない。nameを与える場合には文字列でなければならない。
この関数は新たなスレッドをリターンする。
この関数はobjectがEmacsスレッドを表すならt
、それ以外はnil
をリターンする。
threadがexitするかカレントスレッドがシグナルされるまでブロックする。これはthread関数の結果をリターンする。threadがexit済みなら即座にリターンする。
signal
(Signaling Errorsを参照)と同様だがシグナルはスレッドthreadに送信される。threadがカレントスレッドなら、即座にsignal
を呼び出す。それ以外ならthreadがカレントになり次第、シグナルを受信する。mutex-lock
、condition-wait
、thread-join
の呼び出しによりthreadがブロックされていたらthread-signal
がロックを解除する。
threadがメインスレッドならシグナルは伝播されない。かわりにメインスレッド内のメッセージとして表れる。
実行可能な次のスレッドに実行を譲り渡す。
make-thread
で指定されたthreadの名前をリターンする。
threadが生きていればt
、それ以外はnil
をリターンする。スレッドは自身の関数がまだ実行中なら生きている。
threadが待機中のオブジェクトをリターンする。これは主にデバッグを糸した関数であり、それを示すために“2重ハイフン”の名前を付与してある。
threadがthread-join
内でブロックされていたら待機対象のスレッドをリターンする。
threadがmutex-lock
内でブロックされていたらミューテックスをリターンする。
threadがcondition-wait
内でブロックされていたら条件変数をリターンする。
それ以外ならnil
をリターンする。
カレントスレッドをリターンする。
すべての生きたスレッドオブジェクトのリストをリターンする。呼び出しそれぞれにたいして新たなリストをリターンする。
この変数はEmacs実行中のメインスレッド、スレッドサポートなしでEmacsコンパイル時にはnil
を保持する。
スレッドが実行したコードがハンドルされないエラーをシグナルすると、そのスレッドはexitします。それ以外のスレッドは以下の関数を使用してスレッドのexitを誘発したエラーフォームにアクセスできます。
この関数はエラーによりスレッドがexitした際に記録された最後のエラーフォームをリターンする。異常終了(abnormal
exit)した各スレッドが、以前にスレッドエラーで格納されたフォームを新たな値に上書きするので、アクセスできるのは最後のフォームのみ。cleanupが非nil
なら格納されたフォームをnil
にリセットする。