Добрый день!
В директории есть 100 файлов txt. Мне нужно запустить скрипт, который на каждом файле отработает функцию "func".
Эта функция делает (например):
| Код | sub func { #имя файла передаем через аргумент my $file = shift; open(IN, $file); while(<IN>){ if (/текст/){ print OUT "$file $_"; } } }
|
То есть функция открывает файл, который посылаем ей в качестве аргумента. Далее функция что-то ищет в файле. При нахождении текста функция пишет текст в декскриптор OUT, который является общим для всех тредов. На самом деле функция гораздо более сложная, поэтому хочу запускать скрипт в 2-х тредах.
То есть программа должна перебирать файлы txt и поддерживать параллельно работающих 2 треда, которые будут выполнять функцию func. Когда один из тредов освобождается, его нужно "нагрузить" следующим файлом. И так далее. Два треда должны все время работать параллельно без простоев. При этом результат вычислений все треды пишут в один файл через дескриптор OUT.
Подскажите, как это сделать? |