Я не видел subs::parallel
раньше, но, учитывая, что он выполняет всю обработку потоков для вас, и, кажется, делает это неправильно , основываясь на сообщении об ошибке, я думаю, что это немного подозреваемый.
Обычно я бы не предложил просто так выбросить, но то, что вы делаете, на самом деле не так уж сложно: 1006 * сложнее с интерфейсом простых нитей, так почему бы не попробовать и упростить проблема немного? В то же время я дам вам ответ на другую часть вашего вопроса.
use threads;
my @jobs;
push @jobs, threads->create(sub {
# do some work
});
push @jobs, threads->create(sub {
# do some other work
});
# Repeat as necessary :)
$_->join for @jobs; # Wait for everything to finish.
Вам нужно что-то немного более запутанное, если вы используете возвращаемые значения из этих подпрограмм (простое переключение на хеш-функцию может помочь), но в предоставленном вами примере кода вы их игнорируете, что делает все просто.