Starting with 2.4.7, libxml2 makes provisions to ensure that
concurrentthreads can safely work in parallel parsing different documents.
There ishowever a couple of things to do to ensure it: - configure the library accordingly using the --with-threads options
- call xmlInitParser() in the "main" thread before using any of
thelibxml2 API (except possibly selecting a different memory
allocator)
Note that the thread safety cannot be ensured for multiple threads
sharingthe same document, the locking must be done at the application level,
libxmlexports a basic mutex and reentrant mutexes API in
<libxml/threads.h>.The parts of the library checked for thread safety
are: - concurrent loading
- file access resolution
- catalog access
- catalog building
- entities lookup/accesses
- validation
- global variables per-thread override
- memory handling
XPath is supposed to be thread safe now, but this wasn't
testedseriously. Daniel Veillard |