diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2002-02-08 18:16:09 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2002-02-08 18:16:09 +0000 |
commit | 44d31833dff4d5aeca01b750b4b3e745075a147b (patch) | |
tree | c375c46c9b20ae7b6edbec1442c77f443e4eae08 /ext | |
parent | a4f1a0295dfc0733a51ca0623d486d082d04773a (diff) | |
parent | 83007387b1112d8c8e858eb2722e3e518f1d9896 (diff) | |
download | perl-44d31833dff4d5aeca01b750b4b3e745075a147b.tar.gz |
Integrate mainline
p4raw-id: //depot/perlio@14603
Diffstat (limited to 'ext')
-rw-r--r-- | ext/threads/t/libc.t | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/ext/threads/t/libc.t b/ext/threads/t/libc.t new file mode 100644 index 0000000000..409945ad54 --- /dev/null +++ b/ext/threads/t/libc.t @@ -0,0 +1,60 @@ + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require Config; import Config; + unless ($Config{'useithreads'}) { + print "1..0 # Skip: no useithreads\n"; + exit 0; + } +} + +use ExtUtils::testlib; +use strict; +BEGIN { $| = 1; print "1..11\n"}; + +use threads; +use threads::shared; +my $i = 10; +my $y = 20000; +my %localtime; +for(0..$i) { + $localtime{$_} = localtime($_); +}; +my $mutex = 1; +share($mutex); +sub localtime_r { +# print "Waiting for lock\n"; + lock($mutex); +# print "foo\n"; + my $retval = localtime(shift()); +# unlock($mutex); + return $retval; +} +my @threads; +for(0..$i) { + my $thread = threads->create(sub { + my $arg = $_; + my $localtime = $localtime{$arg}; + my $error = 0; + for(0..$y) { + my $lt = localtime($arg); + if($localtime ne $lt) { + $error++; + } + } + lock($mutex); + if($error) { + print "not ok $mutex # not a safe localtime\n"; + } else { + print "ok $mutex\n"; + } + $mutex++; + }); + push @threads, $thread; +} + +for(@threads) { + $_->join(); +} + |