Следующее объявление приводит к тому, что @thrs имеет нулевые элементы.
my @thrs = threads->create(\&doOperation ) for 1..5;#for 5 threads
Затем вы ссылаетесь на @thrs в двух местах.Если вы замените все эти ссылки на threads->list()
, как указывает Мобрин (не только одна ссылка, а две), то вы добьетесь прогресса.
Или вы можете исправить объявление следующим образом:
my @thrs;
push @thrs, threads->create(\&doOperation ) for 1..5;
Относительно вашего комментария на ваш вопрос об исправлении одной ссылки, позволяющей выполнять копии, но не о завершении скрипта: вы, вероятно, не исправили вторую ссылку, которая ставит в очередь DONE, предотвращая прерывание каждым потоком своего цикла while.
В своем комментарии ниже и в предположении, что вам нужно вести собственный список тем, ikegami показывает более изощренный способ создания списка:
my @thrs = map { threads->create(\&doOperation ) } 1..5;