1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Траблы С Потоками

Тема в разделе "Web - программирование", создана пользователем reddim, 30 янв 2012.

  1. reddim

    reddim Гость

    Репутация:
    0
    Не могу сообразить как преобразовать многопоточный скрип что бы он работал корректно.
    Суть: два текстовых файла logins.txt и pass.txt
    Нужно их вывести на экран..что бы они были без повторенией !!! вот так нужно
    user=pass1
    user=pass2
    user=pass3

    <!--shcode--><pre><code class='perl'>use threads;
    use threads::shared;

    my $threads = 5;
    my @trl = ();

    $trl[$_] = threads->create(\&potoki) for 0..$threads - 1;
    $_->join for @trl;

    sub potoki
    {
    тут организовать чтение из файлов и вывод
    }[/CODE]

    Пробовал вот так...

    <!--shcode--><pre><code class='perl'>#!/usr/bin/perl
    use threads;
    use threads::shared;

    my $threads = 3;
    my @trl = ();



    $trl[$_] = threads->create(\&gogo) for 0..$threads - 1;
    $_->join for @trl;

    my ($password,$sites);
    sub gogo
    {
    open (F,"<sites.txt");
    while(my $site=<F>){

    chomp($site);

    open (N,"<pass.txt");
    while(my $pass=<N>){

    chomp($pass);

    print "$site=$pass\n";

    }}}
    <>;[/CODE]
    Но результат с повторами, т.е 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 раз с этим сталкиваюсь и не могу решить.
     
Загрузка...

Поделиться этой страницей