Следующие пять элементов представляют собой функции, которые должны быть явно импортированы из модуля Thread.
use Thread qw (async yield cond_wait cond_signal cond_broadcast) ;
$thread = async {BLOCK}
Использование функции async () — альтернативный способ создания нового объекта Thread. Данная функция принимает не ссылку на подпрограмму и ее параметр, как метод new (), а блок кода, который становится телом нового потока. К объекту Thread, возвращенному функцией async () можно подключаться с помощью метода join ( ) , точно так же как при использовании потока, созданного с помощью метода new ().
yield ()
Применение функции yields представляет собой способ, с помощью которого поток может сообщить интерпретатору Perl, что конкретный участок кода может использоваться для переключения контекста потока. Поскольку потоки в различных операционных системах реализованы по-разному эта функция может оказывать (или не оказывать) конкретное воздействие. Обычно нет необходимости вызывать функцию yield () для обеспечения параллельного выполнения, но иногда она может помочь более равномерно распределить интервалы времени выполнения между потоками.
cond_wait ($variable)
Функция cond_wait () ожидает поступления сигнала об изменении состояния переменной. Эта функция принимает в качестве параметра заблокированную переменную, освобождает блокировку и переводит поток, владевший блокировкой, в состояние ожидания до тех пор, пока не поступит сигнал об изменении состояния переменной от другого потока, вызвавшего функцию cond_signal () или cond_broadcast (). Перед выполнением возврата функция cond_wait () снова блокирует переменную.
Condo_signal($variable)
Функция cond_signal () сигнализирует об изменении состояния переменной $ variable, что приводит к возобновлению работы потоков, ожидающих этого сигнала. Если ни один поток не ожидает этого сигнала, то вызов данной функции не приводит к выполнению каких-либо действий. Если сигнала об изменении состояния переменной ожидает несколько потоков, то разблокируется один (и только один) из них. Невозможно предсказать заранее, какой именно из ожидающих потоков будет разблокирован.