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

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

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

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

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

Perl Lock

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

  1. VanJo

    VanJo Гость

    Репутация:
    0
    Люди знающие, подскажите, отчего мой скрипт под виндовс работает правильно,
    а если записать его на сервер (UNIX) то выдает ошибку, т.е. не работает ни lock, ни семафор,
    и вместо 3 сек. выполняется за 2 сек?
    Код:
    #!/usr/bin/perl
    use strict; use CGI::Carp qw(fatalsToBrowser);
    use Thread; #use threads;
    use Thread qw/yield/; print "Content-type: text/html\n\n"; print "<html>\n";
    my $lock : shared=0; #$lock = 0;
    use Thread::Semaphore;
    my $s = new Thread::Semaphore;
    sub f {
    if($lock ==0){yield;$lock++;}
    lock $lock; #while($lock){}
    $s->down;
    $a++;
    my ($a)=@_;
    print time, " WAIT $a<br>\n";
    sleep 1;
    print time," DONE $a<br>\n";
    #$lock--;
    $s->up;
    return time," RESULT $a<br>\n";
    }
    my $a =new threads(\&f, 'A'); print time, "<br>\n";
    my $b =new threads(\&f, 'B'); print time, "<br>\n";
    print time, $a->join;
    print time, " 1111 ", scalar threads->list , "<br>\n";
    print time, $b->join;
    print time, " 2222 ", scalar threads->list , "<br>\n";
    print $lock;
     
  2. chorny

    chorny Member

    Репутация:
    0
    Регистрация:
    21 дек 2010
    Сообщения:
    7
    Симпатии:
    0
    Какую ошибку выдает?

    На сервере Perl откомпилирован с поддержкой ithreads?
     
  3. VanJo

    VanJo Гость

    Репутация:
    0
    Файл с сервера ошибку вообще не показывает, просто выполняется за эти самые 2 сек.
    Если бы выдал ошибку на строке use Thread; или на строке use threads; или на строке use Thread qw/yield/; то обозначилась бы проблема.

    Следующий код:
    use Config;
    print "Content-type: text/html\n\n"; print "<html>\n";
    if ($Config{usethreads}) { # We have threads
    print 1,"<br>\n";
    } else {
    print 2,"<br>\n";
    }
    пишет с сервера 1, т.е. как бы поддержка тредов есть.
     
Загрузка...
Похожие Темы - Perl Lock
  1. Anna_Kashina
    Ответов:
    0
    Просмотров:
    239
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    523
  3. SvetlanaL
    Ответов:
    0
    Просмотров:
    498
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    581
  5. SvetlanaL
    Ответов:
    0
    Просмотров:
    689

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