Perl многопоточность

Discussion in 'PHP' started by Flisk, 5 Feb 2012.

  1. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Подскажите по такой теме. Пишу многопоточный скрипт перл, но не получается. Смысл скрипта- процедура получает логины (по очереди из массива), и выводит id потока, какую-то цифру и логин.

    Code:
    #Perl
    use warnings;
    use strict;
    use threads;
    use threads::shared;
    
    my $tds = 3;
    my $id:shared = 9;
    
    my @tdsw;
    my @users = qw/user1 user2 user3/;
    
    my $i=0;
    for (0..$tds)
    {
    $tdsw[$_] = threads->create(\&doit,$users[$i]);
    $i++;
    }
    for (@tdsw)
    {
    $_ ->join; #waiting for threads end
    }
    print "\n work complete";
    
    sub doit
    {
    my $login = shift;
    my $mytid = threads->self->tid();
    	while ($id>0)
    	{
    		{
    		lock ($id);
    		print "\n login - $login, id - $id , potok - $mytid";
    		$id--;
    		}
    	sleep 2;
    	}
    return;
    }
    Почему-то в коде проскакивает ошибка
    Code:
    Use of uninitialized value $login in concatenation (.) or string at
    Что я делаю не так?
     
  2. -=Hardy=-

    -=Hardy=- New Member

    Joined:
    26 Jan 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    "\n" вроде бы тут лишние.
    Или "\n" так пробуй
     
  3. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Как может перевод строки влиять на переменную?
     
  4. vernite akk=

    vernite akk= New Member

    Joined:
    18 May 2011
    Messages:
    73
    Likes Received:
    2
    Reputations:
    0
    http://habrahabr.ru/blogs/perl/128477/
    Мб поможет, я когда пытался ченить многопоточное запилить читал эту статью с доками по трдам на сипане не разобрался.
     
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    В массиве 3 элемента, создается 4 потока.
     
    _________________________