diff options
author | Artur Bergman <sky@nanisky.com> | 2002-02-08 15:19:15 +0000 |
---|---|---|
committer | Artur Bergman <sky@nanisky.com> | 2002-02-08 15:19:15 +0000 |
commit | 83007387b1112d8c8e858eb2722e3e518f1d9896 (patch) | |
tree | a8e2769cbafee0d338d2bd1f72d3176218da9865 /ext | |
parent | ed2c6b9b45ca155543a6a8e651e2d3e0d446406e (diff) | |
download | perl-83007387b1112d8c8e858eb2722e3e518f1d9896.tar.gz |
Start testing for safe localtime functions, TODO, test more functions.
p4raw-id: //depot/perl@14602
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(); +} + |