Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Imager::Threads(3)    User Contributed Perl Documentation   Imager::Threads(3)

       Imager::Threads - Imager	and threads

	 use Imager;
	 use threads;


       Starting	from version 0.94 Imager attempts to work safely with perl's

       Previous	versions stored	some state in global variables,	in particular
       the internal error stack.

       However there are some limitations:

       o   Imager's debug malloc isn't thread safe and will never be.
	   Imager's debug malloc is disabled by	default.

       o   "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".

       o   "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".

       o   "T1Lib", used by one	of Imager's font drivers, is not thread	safe.
	   "Imager::Font::T1" works around this	by single threading access.

       o   killing a thread reading or writing TIFF or GIF files, or using T1
	   fonts through "Imager::Font::T1" may	deadlock other threads when
	   they	attempt	to read	or write TIFF or GIF files, or work with Type
	   1 fonts.

       o   Fill, font, color or	I/O layer objects created in one thread	are
	   not valid for use in	child threads.	If you manage to duplicate
	   such	an object in another thread, you get to	keep both pieces when
	   it breaks.

       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 <>

perl v5.32.0			  2014-01-10		    Imager::Threads(3)


Want to link to this manual page? Use this URL:

home | help