|
Модераторы: ginnie, korob2001 |
|
burakov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Добрый день.
всегда считал, что Thread::Queue это средство, которое позволяет обмениваться данными между потоками корректно . то есть применительно к граберу. всегда использовал схему (2 года обкатки -- ни одного сбоя). когда один поток добавляет задание из базы данных $queue_job -> enqueue ($_); а в остальных потоках, происходит работа над этим заданием while (my $str = $queue_job -> dequeue ()) { my $tid = threads -> tid (); $tid_hash {$tid} = 1; } то есть я считал так, что модуль сам "понимает" (я ж не ассемблере все таки программирую) в момент одновременного обращения к нему из потоков $queue_job -> dequeue ()) как ему не отдать задание дважды, как "выстроить очередь", потому что в теории возможно же ведь одновременное обращение за заданиями? *********** сегодня схема дала сбой то есть задания дублируются.. происходит чехарда. Вопрос. $str = $queue_job -> dequeue () не гарантирует построения "нормальной очереди"? нужно еще что то проверять? Спасибо. |
|||
|
||||
burakov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
нашел ошибку. (повторно добавлял просто задание).
хороший модуль. работает как надо. |
|||
|
||||
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |