Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package BN::Parser;
- use strict;
- use warnings;
- use utf8;
- use Encode;
- use encoding 'utf8';
- #use XML::LibXML;
- use threads;
- use threads::shared;
- use Thread::Queue;
- use Data::Dumper;
- # путь поиска доп. классов
- use File::Basename 'dirname';
- use File::Spec;
- use lib join '/', File::Spec->splitdir(dirname(__FILE__)), '..';
- use BN::General;
- sub dmp { print Dumper @_; }
- our $workers :shared = shared_clone([]);
- our $queue = Thread::Queue->new;
- # конструктор
- sub new {
- my $self :shared = shared_clone({
- });
- return bless $self;
- }
- sub init {
- my $self = shift;
- # создадим заданное в настройках количество потоков
- for my $c (1 .. $_SET->{threads_count}) {
- print "Starting thread $c...\n";
- #push @{$workers}, shared_clone(
- # threads->create(\&BN::Parser::run, $self, $c);
- threads->create(sub {});
- #);
- }
- }
- # метод, который является тредом
- sub run {
- #my $self = shift;
- my $nThread = 0;
- #my ($self, $nThread) = @_;
- print "Thread $nThread starting...\n";
- #while (1) {
- # print "Thread $nThread : loop sarts\n";
- # sleep $_SET->{threads_pause}; # задержка
- # #next unless $BN::Parser::queue->pending(); # ждем, пока не появится что-нибудь в очереди
- #
- # my $url = $BN::Parser::dequeue; # вынимаем из очереди
- #
- #
- #
- # #undef $url;
- #
- # print "Thread $nThread : loop ends\n";
- #}
- }
- sub addUrl {
- my $self = shift;
- $BN::Parser::queue->enqueue(shift); # добавляем урл в очередь
- }
- 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement