On 4/12/2012 9:56 AM, Bradley Lowekamp wrote:
the ImageIO Factories are registered by static initialization in each translation unit which includes tikImageFileReader.h.
That's correct, but only for translation units in applications. This is the only solution I've found that preserves the pre- modularization registration behavior without requiring every application to *explicitly* call an init function. The app must do the init because after modularization the base classes cannot magically know about all their implementations in other modules. The solution is to inject static initalization into translation units of applications.
C++ does not specify the thread safety of static initialization.
By the time main() runs to start threads other than the main one the static initialization will have completed. The concern should only exist for dynamically loaded libraries (plugins). For those an application developer can compile with the option that says not to do the auto init magic. Just add set(ITK_NO_IO_FACTORY_REGISTER_MANAGER 1) before including ITK in the application CMake code. -Brad K _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://www.itk.org/mailman/listinfo/insight-developers
