avoid re-entrancy into libtiff using the mutex api
[imager.git] / bench / tifthread.pl
1 #!perl -w
2 use strict;
3 use threads;
4 use Imager;
5
6 ++$|;
7 Imager->preload;
8
9 my @tests =
10   (
11    [ "bench/largish.tif", "" ],
12    [ "TIFF/testimg/grey16.tif", "" ],
13    [ "TIFF/testimg/comp4bad.tif", "(Iolayer): Read error at scanline 120; got 0 bytes, expected 32" ],
14   );
15
16 my @threads;
17 my $name = "A";
18 for my $test (@tests) {
19   push @threads,
20     threads->create
21       (
22        sub  {
23          my ($file, $result, $name) = @_;
24          for (1 .. 100000) {
25            print $name;
26            my $im = Imager->new(file => $file);
27            if ($result) {
28              $im and die "Expected error from $file, got image";
29              Imager->errstr eq $result
30                or die "Expected error '$result', got '",Imager->errstr, "'"
31            }
32            else {
33              $im or die "Expected image got error '", Imager->errstr, "'";
34            }
35          }
36          return;
37        },
38        @$test,
39        $name
40       );
41   ++$name;
42 }
43
44 for my $t (@threads) {
45   $t->join();
46 }