Imager::Threads - Imager and threads
use Imager; use threads; Imager->preload; threads->create(...);
Starting from version 0.94 Imager attempts to work safely with perl's ithreads
.
Previous versions stored some state in global variables, in particular the internal error stack.
However there are some limitations:
libtiff
, which Imager uses for TIFF file support is not thread safe, Imager::File::TIFF
works around this by single-threading its access to libtiff
.giflib
, which Imager uses for GIF support is not thread safe before version 5. Imager::File::GIF
works around this by single threading its access to giflib
.T1Lib
, used by one of Imager's font drivers, is not thread safe. Imager::Font::T1
works around this by single threading access.Imager::Font::T1
may deadlock other threads when they attempt to read or write TIFF or GIF files, or work with Type 1 fonts.Note that if you have another module using libtiff
, giflib
or t1lib
it may interact with Imager's use of those libraries in a threaded environment, since there's no way to co-ordinate access to the global information libtiff
, giflib
and t1lib
maintain.
Imager currently doesn't use threads itself, except for testing its threads support.
Imager, threads
Tony Cook <tony@cpan.org>