| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > небольшие траблы с потоками |
| Автор: reddim 29.1.2012, 23:58 | ||||
| Не могу сообразить как преобразовать многопоточный скрип что бы он работал корректно. Суть: два текстовых файла logins.txt и pass.txt Нужно их вывести на экран..что бы они были без повторенией !!! вот так нужно user=pass1 user=pass2 user=pass3
Пробовал вот так...
Но результат с повторами, т.е 3 потока = 3 повтора... user=pass1 user=pass2 user=pass3 user=pass1 user=pass2 user=pass3 user=pass1 user=pass2 user=pass3 Вообщем пробовал и через foreach и еще по разному, пришел к выводу, что нужно это всё дело сделать что бы было в 1 цикле = while т.е нужно это в 1 файл как то сделать а потом разбить, и тогда нормально получится...типа while(@sites) { my ($pass, $sites) = split $делитель => shift @sites; } просто это так если чесно за*ло 30 раз с этим сталкиваюсь и не могу решить. |
| Автор: infarch 30.1.2012, 11:08 |
| А что тут странного? Вы одновременно читаете одни и те же файлы в нескольких потоках. Вот и получаете одни и те же строки в выводе. Если дело просто в чтении файла, при чем тут потоки? Сделайте простой цикл. Если же предстоят некие операции связанные с веб, тогда да, потоки не помешают. Но не так как вы сделали. Сначала в главном потоке надо вычитать файлы и создать очередь задач. Потом создать потоки исполнители и расшарить между ними эту очередь. Почитайте про Thread::Queue. |
| Автор: reddim 30.1.2012, 11:32 |
| я вам не гуру потоков) я вообще ничего не понял что вы написали, почитаю..мб есть какие-то примеры..а через данную конструкцию как реализовать use threads; use threads::shared; my $threads = 5 ; my @trl = (); $trl[$_] = threads->create(\&potoki) for 0..$threads - 1; $_->join for @trl; sub potoki { чтение из файлов и вывод } |
| Автор: DurRandir 30.1.2012, 12:06 |
| Какую именно операцию вы хотите распараллелить? Как только вы ответите для себя на этот вопрос - то сможете это описать. А то пока у меня такое чувство, что потоки для вас - магия, которая "сделает всё сама". |
| Автор: tzirechnoy 30.1.2012, 13:06 |
| Берёте какую-нибудь книжку по программированию для начинающих (лучшэ -- Кнут Д., Искусство программирования), и начинаете решать примеры. Последовательно. Когда прорешаете примеры нормальной сложности -- возвращайтесь, будет о чём разговаривать. (Потому, что всё, что Вы написали -- это просто ад. А Вашэ написание методом генетического программирования -- в особенности). PS И да, Ш-шпанчик Вас упаси связываться с потоками. Это вообще чрезвычайно переоцэнённая, а потому достаточно вредная модэль вычислений. В общем, не трогайте. |
| Автор: reddim 30.1.2012, 13:23 |
| я прошу лишь показать мне многопоточный пример вывода данных из 2 разных файлов...и всё.. |