Blue rectangle over striped pattern (writing to same pixels), threaded. The Rectangle does not survive intact...
#! perl
use warnings;
use strict;
use threads;
use Image::Magick;
my $image = Image::Magick->new(
size => "600x600",
);
$image->Read("xc:white");
for my $i (200..400){
async{
my $color = $i % 2 ? '#f00' : '#0f0';
$image->Draw(
primitive => 'line',
points => "$i,100 $i,500",
stroke => $color,
);
}->join;
async{
my $y = 100 + $i;
$image->Draw(
primitive => 'line',
points => "200,$y 400,$y",
stroke => '#00f'
);
}->join;
}
$image->Set(magick=>'gif');
my $blob = $image->ImageToBlob();
open(FH,"> $0.gif")or die "$!\n";
print FH $blob;
close FH;
The example in the previous post with and without threading:
Rate threaded non-threaded
threaded 1.41/s -- -94%
non-threaded 24.7/s 1652% --