Поток объектов Perl - PullRequest
       14

Поток объектов Perl

0 голосов
/ 27 января 2011

Привет всем, у меня вопрос об объектах Perl и потоке.

Моя программа - это анализатор журналов, который обрабатывает каждую строку журналов в списке объектов, и, таким образом, на каждый из объектов можно ссылатьсянапример:

для получения сохраненного значения:

print @object[$index]->time;

output : 01:11:22

для установки значения:

@object[$index]->time("01:22:25");
print @object[$index]->time;

output : 01:22:25

И после сохранения всех журналов в памяти у меня будет список @ объектов.

Так что проблема заключается в обработке объектов.

Я хочу обрабатывать данные через потокии я могу сделать это на обычных данных, таких как изменение строки, суммирование и т. д. Но я не знаю, как это сделать для объектов.

Я хочу сделать что-то вроде

my $thr2 = threads->new(\&processTime, @object);

(пример не верный, просто представление о том, как я хочу, чтобы обработка была)

Поэтому, поэтому я нуждаюсь в помощи вас, ребята, чтобы помочь мне с обработкой объектов посредством потоков.Спасибо

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Если вам нужна только параллельная обработка, проблем с разветвлением вместо использования потоков гораздо меньше. Одна популярная библиотека разветвлений - Parallel :: ForkManager , хотя есть и другие.

Если вы чувствуете, что должны использовать потоки, см. Thread :: Queue , но обратите внимание на его совет внимательно прочитать раздел о потоках :: общих ошибках и ограничениях и, в частности, прочитать пример общего ресурса класс безопасности .

Кроме того, в perl5 элемент массива доступен как $object[$index], а не @object[$index]; последний представляет собой срез массива, который во многих случаях будет работать одинаково, но менее эффективен. Если у вас включены предупреждения (что и следует делать), вы должны увидеть предупреждение об этом.

0 голосов
/ 27 января 2011

IIRC perl выполняет копирование при записи для любого объекта (ref), используемого несколькими потоками, если только объект явно не помечен для совместного использования. Прочитайте темы :: общая страница perldoc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...