41.9.5 进程与线程

由于线程是较晚才加入 Emacs Lisp 的特性,再加上动态绑定有时会与 accept-process-output 配合使用,默认情况下一个进程会被锁定在创建它的线程上。当进程被锁定到某个线程时,只有该线程才能接收此进程的输出。

Lisp 程序可以指定进程要锁定到哪个线程,或指示 Emacs 解除进程的锁定,此时它的输出可以由任意线程处理。同一时间只会有一个线程等待某个进程的输出——一旦某个线程开始等待输出,该进程会被临时锁定,直到 accept-process-outputsit-for 返回。

如果线程退出,所有锁定到该线程的进程都会被解除锁定。

Function: process-thread process

返回 process 被锁定到的线程。如果 process 未被锁定,则返回 nil

Function: set-process-thread process thread

process 的锁定线程设置为 threadthread 可以是 nil,此时进程会被解除锁定。