diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2002-04-28 16:13:34 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-04-28 16:13:34 +0000 |
commit | f1f3224a6db45e106d059fb8564b0c9f6dc649b4 (patch) | |
tree | 8023452237f7774b7a020da0e7ae061fb9897b70 /ext/threads/shared | |
parent | cd5e0f48cb0779f625af5d8146ee1d6c56f31dcb (diff) | |
download | perl-f1f3224a6db45e106d059fb8564b0c9f6dc649b4.tar.gz |
(retracted by #16258)
Fix thread tests not to depend on sleep() as
a scheduling aid. In two tests (basic and list)
I had to change from sleep() hack to another hack...
basically, using the filesystem as a semaphore.
The assumption made is that rmdir() is atomic.
(The sleep() scheduling assumption broke with the
GNU pth in NetBSD.)
(the cond.t part retracted by #16250)
p4raw-id: //depot/perl@16249
Diffstat (limited to 'ext/threads/shared')
-rw-r--r-- | ext/threads/shared/t/cond.t | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/ext/threads/shared/t/cond.t b/ext/threads/shared/t/cond.t index c143c02395..083af4229b 100644 --- a/ext/threads/shared/t/cond.t +++ b/ext/threads/shared/t/cond.t @@ -1,16 +1,16 @@ BEGIN { chdir 't' if -d 't'; - push @INC ,'../lib'; + @INC = qw(../lib .); require Config; import Config; unless ($Config{'useithreads'}) { print "1..0 # Skip: no threads\n"; exit 0; } + require "test.pl"; } -print "1..5\n"; +print "1..4\n"; use strict; - use threads; use threads::shared; @@ -18,23 +18,30 @@ use threads::shared; my $lock : shared; sub foo { + my $ret = 0; lock($lock); - print "ok 1\n"; - sleep 2; - print "ok 2\n"; + $ret += 1; cond_wait($lock); - print "ok 5\n"; + $ret += 2; + return $ret; } sub bar { + my $ret = 0; lock($lock); - print "ok 3\n"; + $ret += 1; cond_signal($lock); - print "ok 4\n"; + $ret += 2; + return $ret; } -my $tr = threads->create(\&foo); +my $tr1 = threads->create(\&foo); my $tr2 = threads->create(\&bar); -$tr->join(); -$tr2->join(); +my $rt1 = $tr1->join(); +my $rt2 = $tr2->join(); +ok($rt1 & 1); +ok($rt1 & 2); +ok($rt2 & 1); +ok($rt2 & 2); + |