41.9.5 Процессы и потоки

Поскольку потоки были относительно поздним дополнением к Emacs Lisp, и в связи с тем, как иногда использовалось динамическое связывание в сочетании с accept-process-output, по умолчанию процесс привязан к потоку, который его создал. Когда процесс привязан к потоку, вывод из процесса может быть принят только этим потоком.

Программа на Lisp может указать, к какому потоку должен быть привязан процесс, или потребовать от Emacs отвязать процесс, в этом случае его вывод может быть обработан любым потоком. Одновременно только один поток будет ожидать вывода от данного процесса — как только один поток начинает ожидать вывод, процесс временно блокируется до тех пор, пока не будут вызваны accept-process-output или sit-for.

Если поток завершает работу, все процессы, привязанные к нему, отвязываются.

Функция: process-thread process

Возвращает поток, к которому привязан process. Если process не привязан, возвращает nil.

Функция: set-process-thread process thread

Устанавливает поток привязки process в thread. thread может быть nil, в этом случае процесс отвязывается.