summaryrefslogtreecommitdiff
path: root/ext/threads/shared
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2002-04-28 16:13:34 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2002-04-28 16:13:34 +0000
commitf1f3224a6db45e106d059fb8564b0c9f6dc649b4 (patch)
tree8023452237f7774b7a020da0e7ae061fb9897b70 /ext/threads/shared
parentcd5e0f48cb0779f625af5d8146ee1d6c56f31dcb (diff)
downloadperl-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.t31
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);
+