(libtool14.info.gz) Thread Safety in libltdl
Info Catalog
(libtool14.info.gz) Modules for libltdl
(libtool14.info.gz) Using libltdl
(libtool14.info.gz) User defined module data
10.3 Using libtldl in a multi threaded environment
==================================================
Using the `lt_dlmutex_register()' function, and by providing some
appropriate callback function definitions, libltdl can be used in a
multi-threaded environment.
-- Type: void lt_dlmutex_lock (void)
This is the type of a function pointer holding the address of a
function which will be called at the start of parts of the libltdl
implementation code which require a mutex lock.
Because libltdl is inherantly recursive, it is important that the
locking mechanism employed by these callback functions are
reentrant, or else strange problems will occur.
-- Type: void lt_dlmutex_unlock (void)
The type of a matching unlock function.
-- Type: void lt_dlmutex_seterror (const char *ERROR);
Many of the functions in the libltdl API have a special return
value to indicate to the client that an error has occured.
Normally (in single threaded applications) a string describing
that error can be retrieved from internal storage with
`lt_dlerror()'.
A function of this type must be registered with the library in
order for it to work in a multi-threaded context. The function
should store any error message passed in thread local storage.
-- Type: const char * lt_dlmutex_geterror (void)
The type of a matching callback function to retrieve the last
stored error message from thread local storage.
When regeistered correctly this function will be used by
`lt_dlerror())' from all threads to retrieve error messages for the
client.
-- Function: int lt_dlmutex_register (lt_dlmutex_lock *LOCK,
lt_dlmutex_unlock *UNLOCK, lt_dlmutex_set_error *SETERROR,
lt_dlmutex_geterror *GETERROR)
Use this function to register one of each of function ttypes
described above in preparation for multi-threaded use of libltdl.
All arguments must be valid non-`NULL' function addresses, or else
all `NULL' to return to single threaded operation.
Info Catalog
(libtool14.info.gz) Modules for libltdl
(libtool14.info.gz) Using libltdl
(libtool14.info.gz) User defined module data
automatically generated byinfo2html