Advertisement
bvn13

Untitled

Dec 15th, 2012
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. package BN::Parser;
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use utf8;
  7. use Encode;
  8. use encoding 'utf8';
  9.  
  10. #use XML::LibXML;
  11.  
  12.  
  13. use threads;
  14. use threads::shared;
  15. use Thread::Queue;
  16.  
  17. use Data::Dumper;
  18.  
  19. # путь поиска доп. классов
  20. use File::Basename 'dirname';
  21. use File::Spec;
  22. use lib join '/', File::Spec->splitdir(dirname(__FILE__)), '..';
  23.  
  24. use BN::General;
  25.  
  26.  
  27.  
  28. sub dmp { print Dumper @_; }
  29.  
  30. our $workers :shared = shared_clone([]);
  31. our $queue = Thread::Queue->new;
  32.  
  33.  
  34. # конструктор
  35. sub new {
  36.  
  37. my $self :shared = shared_clone({
  38. });
  39.  
  40. return bless $self;
  41.  
  42. }
  43.  
  44. sub init {
  45. my $self = shift;
  46.  
  47. # создадим заданное в настройках количество потоков
  48. for my $c (1 .. $_SET->{threads_count}) {
  49. print "Starting thread $c...\n";
  50. #push @{$workers}, shared_clone(
  51. # threads->create(\&BN::Parser::run, $self, $c);
  52. threads->create(sub {});
  53. #);
  54. }
  55.  
  56. }
  57.  
  58. # метод, который является тредом
  59. sub run {
  60. #my $self = shift;
  61. my $nThread = 0;
  62.  
  63. #my ($self, $nThread) = @_;
  64.  
  65. print "Thread $nThread starting...\n";
  66.  
  67. #while (1) {
  68. # print "Thread $nThread : loop sarts\n";
  69. # sleep $_SET->{threads_pause}; # задержка
  70. # #next unless $BN::Parser::queue->pending(); # ждем, пока не появится что-нибудь в очереди
  71. #
  72. # my $url = $BN::Parser::dequeue; # вынимаем из очереди
  73. #
  74. #
  75. #
  76. # #undef $url;
  77. #
  78. # print "Thread $nThread : loop ends\n";
  79. #}
  80.  
  81. }
  82.  
  83. sub addUrl {
  84. my $self = shift;
  85.  
  86. $BN::Parser::queue->enqueue(shift); # добавляем урл в очередь
  87. }
  88.  
  89. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement