Linux cpanel2.daytoncreative.net 2.6.32-754.29.2.el6.x86_64 #1 SMP Tue May 12 17:39:04 UTC 2020 x86_64
Apache/2.4.43 (cPanel) OpenSSL/1.1.1g mod_bwlimited/1.4
Server IP : 70.62.220.67 & Your IP : 216.73.216.193
Domains :
Cant Read [ /etc/named.conf ]
User : michaelgreg
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
log /
perl-5.20.2 /
dist /
Thread-Queue /
t /
Delete
Unzip
Name
Size
Permission
Date
Action
01_basic.t
2.83
KB
-r--r--r--
2014-12-27 11:48
02_refs.t
4.58
KB
-r--r--r--
2014-12-27 11:48
03_peek.t
960
B
-r--r--r--
2014-12-27 11:48
04_errs.t
1.72
KB
-r--r--r--
2014-12-27 11:48
05_extract.t
2.21
KB
-r--r--r--
2014-12-27 11:48
06_insert.t
2.05
KB
-r--r--r--
2014-12-27 11:48
07_lock.t
975
B
-r--r--r--
2014-12-27 11:49
08_nothreads.t
2.61
KB
-r--r--r--
2014-12-27 11:48
09_ended.t
3.68
KB
-r--r--r--
2014-12-27 11:48
10_timed.t
1.59
KB
-r--r--r--
2014-12-27 11:48
Save
Rename
use strict; use warnings; use Config; BEGIN { if (! $Config{'useithreads'}) { print("1..0 # SKIP Perl not compiled with 'useithreads'\n"); exit(0); } if (! $Config{'d_select'}) { print("1..0 # SKIP 'select()' not available for testing\n"); exit(0); } } use threads; use Thread::Queue; use Test::More; my $num_threads = 3; my $cycles = 2; my $count = 2; plan tests => 3*$num_threads*$cycles*$count + 6*$num_threads + 6; # Test for end() while threads are blocked and no more items in queue { my @items = 1..($num_threads*$cycles*$count); my $q = Thread::Queue->new(@items); my $r = Thread::Queue->new(); my @threads; for my $ii (1..$num_threads) { push @threads, threads->create( sub { # Thread will loop until no more work is coming LOOP: while (my @set = $q->dequeue($count)) { foreach my $item (@set) { last LOOP if (! defined($item)); pass("'$item' read from queue in thread $ii"); } select(undef, undef, undef, rand(1)); $r->enqueue($ii); } pass("Thread $ii exiting"); }); } # Make sure there's nothing in the queue and threads are blocking for my $ii (1..($num_threads*$cycles)) { $r->dequeue(); } sleep(1); threads->yield(); is($q->pending(), 0, 'Queue is empty'); # Signal no more work is coming $q->end(); is($q->pending(), undef, 'Queue is ended'); for my $thread (@threads) { $thread->join; pass($thread->tid." joined"); } } # Test for end() while threads are blocked and items still remain in queue { my @items = 1..($num_threads*$cycles*$count + 1); my $q = Thread::Queue->new(@items); my $r = Thread::Queue->new(); my @threads; for my $ii (1..$num_threads) { push @threads, threads->create( sub { # Thread will loop until no more work is coming LOOP: while (my @set = $q->dequeue($count)) { foreach my $item (@set) { last LOOP if (! defined($item)); pass("'$item' read from queue in thread $ii"); } select(undef, undef, undef, rand(1)); $r->enqueue($ii); } pass("Thread $ii exiting"); }); } # Make sure there's nothing in the queue and threads are blocking for my $ii (1..($num_threads*$cycles)) { $r->dequeue(); } sleep(1); threads->yield(); is($q->pending(), 1, 'Queue has one left'); # Signal no more work is coming $q->end(); for my $thread (@threads) { $thread->join; pass($thread->tid." joined"); } is($q->pending(), undef, 'Queue is ended'); } # Test of end() send while items in queue { my @items = 1..($num_threads*$cycles*$count + 1); my $q = Thread::Queue->new(@items); my @threads; for my $ii (1..$num_threads) { push @threads, threads->create( sub { # Thread will loop until no more work is coming LOOP: while (my @set = $q->dequeue($count)) { foreach my $item (@set) { last LOOP if (! defined($item)); pass("'$item' read from queue in thread $ii"); } select(undef, undef, undef, rand(1)); } pass("Thread $ii exiting"); }); } # Signal no more work is coming to the blocked threads, they # should unblock. $q->end(); for my $thread (@threads) { $thread->join; pass($thread->tid." joined"); } } exit(0); # EOF