Spec-Zone.ru › Elisp

Основные функции потоков

Потоки могут быть созданы и ожидания завершения. Поток нельзя завершить напрямую, но текущий поток может быть завершен неявно, а другие потоки могут быть сигнализированы.

Функция: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API