Основные функции потоков
Потоки могут быть созданы и ожидания завершения. Поток нельзя завершить напрямую, но текущий поток может быть завершен неявно, а другие потоки могут быть сигнализированы.
- Функция: make-thread функция &опционально имя
-
Создает новый поток выполнения, который вызывает функцию. Когда функция возвращает значение, поток завершается.
Новый поток создается без привязки локальных переменных. Текущий буфер нового потока наследуется от текущего потока.
Имя может быть указано для присвоения имени потоку. Имя используется только для отладки и информационных целей; оно не имеет значения для Emacs. Если Имя указано, оно должно быть строкой.
Эта функция возвращает новый поток.
- Функция: threadp объект
Эта функция возвращает
tесли объект представляет собой поток Emacs,nilв противном случае.
- Функция: thread-join поток
Заблокировать выполнение, пока поток не завершится или пока текущий поток не получит сигнал. Возвращает результат выполнения потока. Если поток уже завершился, функция возвращает результат немедленно.
- Функция: thread-signal поток символ-ошибки данные
-
Как
signal(см. Сигналы об ошибках), но сигнал доставляется в поток поток. Если поток — это текущий поток, то это просто вызоветsignalнемедленно. В противном случае, поток получит сигнал, как только станет текущим. Если поток был заблокирован вызовом кmutex-lock,condition-wait, илиthread-join;thread-signalразблокирует его.Если поток — это основной поток, сигнал не распространяется туда. Вместо этого он отображается как сообщение в главном потоке.
- Функция: thread-yield
Уступить выполнение следующему готовящемуся потоку.
- Функция: thread-name поток
Возвращает имя потока, как указано в
make-thread.
- Функция: thread-live-p поток
Возвращает
tесли поток жив, илиnilесли он не жив. Поток жив до тех пор, пока его функция продолжает выполняться.
- Функция: thread--blocker поток
-
Возвращает объект, на котором ожидает поток. Эта функция предназначена в первую очередь для отладки и имеет имя с «двойным дефисом», чтобы указать на это.
Если поток заблокирован в
thread-join, это возвращает поток, на котором он ожидает.Если поток заблокирован в
mutex-lock, это возвращает мьютекс.Если поток заблокирован в
condition-wait, это возвращает переменную состояния.В противном случае, это возвращает
nil.
- Функция: current-thread
Возвращает текущий поток.
- Функция: all-threads
Возвращает список всех активных объектов потоков. При каждом вызове возвращается новый список.
- Переменная: main-thread
Эта переменная сохраняет основной поток Emacs, или
nilесли Emacs скомпилирован без поддержки потоков.
Когда код, выполняемый потоком, сигнализирует об ошибке, которая не обрабатывается, поток завершается. Другие потоки могут получить доступ к форме ошибки, которая привела к завершению потока, используя следующую функцию.
- Функция: thread-last-error &опционально очистка
Эта функция возвращает последнюю форму ошибки, записанную при завершении потока из-за ошибки. Каждый поток, завершающийся аномально, перезаписывает форму, сохраненную ошибкой предыдущего потока, новым значением, поэтому доступна только последняя. Если очистка не
nil, сохраненная форма сбрасывается до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/Basic-Thread-Functions.html