The IMSL C Math Library is thread safe. That means it can be safely called from a multithreaded application if the calling program adheres to a few important guidelines. In particular, IMSL C Math Library's implementation of signal handling, error handling, and I/O must be understood.
Initialization is required for certain Windows applications. Refer to function imsl_initialize, Chapter 12, “Utilities”, for information on when this is required and for examples.
When calling C Math Library from a multithreaded
application it is necessary to turn
C Math Library's signal-handling
capability off. The signal handling is off if the C Math Library is OpenMP
enabled on the platform, otherwise signal handling is turned off by making a
single call to imsl_error_options before
any calls are made to C Math Library. For an example of turning off C Math
Library's internal signal handling, see “Chapter 12, Utilities”, Example 3 of imsl_error_options.
C Math Library's error handling in a multithreaded application behaves similarly to how it behaves in a single-threaded application. The major difference is that an error stack exists for each thread calling C Math Library functions. The result of separate error stacks for each thread is greater control of the error handler options for each thread. Each thread can set its own options for the C Math Library error handler using imsl_error_options. For an example of setting error handler options for separate threads, see “Chapter 12, Utilities”, Example 3 of imsl_error_options.
A number of routines in C Math Library can be used to produce output. The function imsl_output_file can be used to control to which file the output is directed. In an application with a single thread of execution, a single call to imsl_output_file can be used to set the file to which the output will be directed. In a multithreaded application each thread must call imsl_output_file to change the default setting of where output will be directed. See the “Utilities” chapter, Example 2 of imsl_output_file for more details.
|
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |