summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2002-02-08 18:16:09 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2002-02-08 18:16:09 +0000
commit44d31833dff4d5aeca01b750b4b3e745075a147b (patch)
treec375c46c9b20ae7b6edbec1442c77f443e4eae08 /ext
parenta4f1a0295dfc0733a51ca0623d486d082d04773a (diff)
parent83007387b1112d8c8e858eb2722e3e518f1d9896 (diff)
downloadperl-44d31833dff4d5aeca01b750b4b3e745075a147b.tar.gz
Integrate mainline
p4raw-id: //depot/perlio@14603
Diffstat (limited to 'ext')
-rw-r--r--ext/threads/t/libc.t60
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();
+}
+