Процессы и потоки
Поскольку потоки были относительно поздним дополнением к 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, в таком случае процесс разблокируется.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Processes-and-Threads.html