スレッドは比較的に新しくEmacs
Lispに追加されたものであり、ダイナミックバインドがaccept-process-output
と組み合わせて使用される方法のために、デフォルトではプロセスはそれを作成したスレッドにロックされます。プロセスがスレッドにロックされた場合には、プロセスの出力はそのスレッドだけが受け取ることができます。
Lispプログラムはプロセスがロックされたスレッドがどれかを指定したり、あるいはEmacsにプロセスのアンロックを指示することができ、この場合にはプロセスの出力を任意のスレッドが受け取ることができます。与えられたプロセスから出力を待機できるのは一度に1つのスレッドだけです。1つのスレッドが一度出力を待機すると、プロセスはaccept-process-output
かsit-for
がリターンするまで一時的にロックされます。
スレッドがexitすると、それにロックされたすべてのプロセスがアンロックされます。
processがロックされているスレッドをリターンする。processがロックされていなければnil
をリターンする。
processをロックするスレッドをthreadにセットする。threadはnil
でもよく、この場合にはプロセスはアンロックされる。