|
|
Starting with 2.4.7, libxml2 makes provisions to ensure that concurrent threads can safely work in parallel parsing different documents. There is however 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 the libxml2 API (except possibly selecting a different memory allocator)
|
|
|
|
|
|
Note that the thread safety cannot be ensured for multiple threads sharing the same document, the locking must be done at the application level, libxml exports 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 has been tested for threaded usage on non-modified document for example when using libxslt, but make 100% sure the documents are accessed read-only !
|
|
|
|
|
|
Daniel Veillard |
|
|
\ No newline at end of file |