Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как дождатся завершения потоков. threads


Автор: nIkTo 18.9.2009, 18:56
Вот код, подскажите как дождатся завершения потоков и только потом продолжать работу в основном теле программы (тоесть работу с массивом @finded)

Код

#!/usr/bin/perl -w
use threads;
use threads::shared;

my @finded : shared;

for(0..4) {
    my $thread = threads->create(\&find);
}
foreach my $thread (threads->list) {
    $thread->join;
}

# Тут работаем с массивом @finded

sub find {
    # Код выполняемый в каждом потоке
    # тут добавляем в расшареный массив @finded
}


Спасибо.
Так же буду благодарен за ссылки на статьи или учебники с описанием методов работы с модулем threads.

Автор: Pfailed 18.9.2009, 21:27
А ваш код не работает нужным образом? join как раз и заставляет основной поток дождаться завершения дочерних.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)