2001-11-10 19:57:23 +08:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
2001-10-30 20:51:17 +08:00
< html >
< head >
< meta content = "text/html; charset=ISO-8859-1" http-equiv = "Content-Type" >
2002-03-29 22:08:27 +08:00
< link rel = "SHORTCUT ICON" href = "/favicon.ico" >
2001-10-30 20:51:17 +08:00
< style type = "text/css" > < ! - -
2002-02-21 22:46:29 +08:00
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
2001-10-30 20:51:17 +08:00
A:link, A:visited, A:active { text-decoration: underline }
-->< / style >
< title > Thread safety< / title >
< / head >
< body bgcolor = "#8b7765" text = "#000000" link = "#000000" vlink = "#000000" >
< table border = "0" width = "100%" cellpadding = "5" cellspacing = "0" align = "center" > < tr >
< td width = "180" >
< a href = "http://www.gnome.org/" > < img src = "smallfootonly.gif" alt = "Gnome Logo" > < / a > < a href = "http://www.w3.org/Status" > < img src = "w3c.png" alt = "W3C Logo" > < / a > < a href = "http://www.redhat.com/" > < img src = "redhat.gif" alt = "Red Hat Logo" > < / a >
< / td >
< td > < table border = "0" width = "90%" cellpadding = "2" cellspacing = "0" align = "center" bgcolor = "#000000" > < tr > < td > < table width = "100%" border = "0" cellspacing = "1" cellpadding = "3" bgcolor = "#fffacd" > < tr > < td align = "center" >
< h1 > The XML C library for Gnome< / h1 >
< h2 > Thread safety< / h2 >
< / td > < / tr > < / table > < / td > < / tr > < / table > < / td >
< / tr > < / table >
< table border = "0" cellpadding = "4" cellspacing = "0" width = "100%" align = "center" > < tr > < td bgcolor = "#8b7765" > < table border = "0" cellspacing = "0" cellpadding = "2" width = "100%" > < tr >
< td valign = "top" width = "200" bgcolor = "#8b7765" > < table border = "0" cellspacing = "0" cellpadding = "1" width = "100%" bgcolor = "#000000" > < tr > < td >
< table width = "100%" border = "0" cellspacing = "1" cellpadding = "3" >
< tr > < td colspan = "1" bgcolor = "#eecfa1" align = "center" > < center > < b > Main Menu< / b > < / center > < / td > < / tr >
2002-01-21 17:52:27 +08:00
< tr > < td bgcolor = "#fffacd" > < ul >
2001-10-30 20:51:17 +08:00
< li > < a href = "index.html" > Home< / a > < / li >
< li > < a href = "intro.html" > Introduction< / a > < / li >
< li > < a href = "FAQ.html" > FAQ< / a > < / li >
< li > < a href = "docs.html" > Documentation< / a > < / li >
< li > < a href = "bugs.html" > Reporting bugs and getting help< / a > < / li >
< li > < a href = "help.html" > How to help< / a > < / li >
< li > < a href = "downloads.html" > Downloads< / a > < / li >
< li > < a href = "news.html" > News< / a > < / li >
2002-01-08 21:26:00 +08:00
< li > < a href = "XMLinfo.html" > XML< / a > < / li >
2001-10-30 20:51:17 +08:00
< li > < a href = "XSLT.html" > XSLT< / a > < / li >
2002-02-20 22:37:47 +08:00
< li > < a href = "python.html" > Python and bindings< / a > < / li >
2001-10-30 20:51:17 +08:00
< li > < a href = "architecture.html" > libxml architecture< / a > < / li >
< li > < a href = "tree.html" > The tree output< / a > < / li >
< li > < a href = "interface.html" > The SAX interface< / a > < / li >
< li > < a href = "xmldtd.html" > Validation & DTDs< / a > < / li >
< li > < a href = "xmlmem.html" > Memory Management< / a > < / li >
< li > < a href = "encoding.html" > Encodings support< / a > < / li >
< li > < a href = "xmlio.html" > I/O Interfaces< / a > < / li >
< li > < a href = "catalog.html" > Catalog support< / a > < / li >
< li > < a href = "library.html" > The parser interfaces< / a > < / li >
< li > < a href = "entities.html" > Entities or no entities< / a > < / li >
< li > < a href = "namespaces.html" > Namespaces< / a > < / li >
< li > < a href = "upgrade.html" > Upgrading 1.x code< / a > < / li >
< li > < a href = "threads.html" > Thread safety< / a > < / li >
< li > < a href = "DOM.html" > DOM Principles< / a > < / li >
< li > < a href = "example.html" > A real example< / a > < / li >
< li > < a href = "contribs.html" > Contributions< / a > < / li >
2002-06-05 22:48:26 +08:00
< li > < a href = "tutorial/index.html" > Tutorial< / a > < / li >
2001-10-30 20:51:17 +08:00
< li >
< a href = "xml.html" > flat page< / a > , < a href = "site.xsl" > stylesheet< / a >
< / li >
< / ul > < / td > < / tr >
< / table >
< table width = "100%" border = "0" cellspacing = "1" cellpadding = "3" >
2002-01-23 20:36:34 +08:00
< tr > < td colspan = "1" bgcolor = "#eecfa1" align = "center" > < center > < b > API Indexes< / b > < / center > < / td > < / tr >
< tr > < td bgcolor = "#fffacd" > < ul >
2002-01-24 01:58:17 +08:00
< li > < a href = "APIchunk0.html" > Alphabetic< / a > < / li >
2002-01-23 20:36:34 +08:00
< li > < a href = "APIconstructors.html" > Constructors< / a > < / li >
< li > < a href = "APIfunctions.html" > Functions/Types< / a > < / li >
< li > < a href = "APIfiles.html" > Modules< / a > < / li >
< li > < a href = "APIsymbols.html" > Symbols< / a > < / li >
< / ul > < / td > < / tr >
< / table >
< table width = "100%" border = "0" cellspacing = "1" cellpadding = "3" >
2001-10-30 20:51:17 +08:00
< tr > < td colspan = "1" bgcolor = "#eecfa1" align = "center" > < center > < b > Related links< / b > < / center > < / td > < / tr >
2002-01-21 17:52:27 +08:00
< tr > < td bgcolor = "#fffacd" > < ul >
2001-10-30 20:51:17 +08:00
< li > < a href = "http://mail.gnome.org/archives/xml/" > Mail archive< / a > < / li >
< li > < a href = "http://xmlsoft.org/XSLT/" > XSLT libxslt< / a > < / li >
2002-01-08 19:49:22 +08:00
< li > < a href = "http://phd.cs.unibo.it/gdome2/" > DOM gdome2< / a > < / li >
2002-03-17 18:34:11 +08:00
< li > < a href = "http://www.aleksey.com/xmlsec/" > XML-DSig xmlsec< / a > < / li >
2001-10-30 20:51:17 +08:00
< li > < a href = "ftp://xmlsoft.org/" > FTP< / a > < / li >
< li > < a href = "http://www.fh-frankfurt.de/~igor/projects/libxml/" > Windows binaries< / a > < / li >
2001-11-27 01:25:02 +08:00
< li > < a href = "http://garypennington.net/libxml2/" > Solaris binaries< / a > < / li >
2002-05-02 14:11:10 +08:00
< li > < a href = "http://sourceforge.net/projects/libxml2-pas/" > Pascal bindings< / a > < / li >
2002-03-17 18:34:11 +08:00
< li > < a href = "http://bugzilla.gnome.org/buglist.cgi?product=libxml&product=libxml2" > Bug Tracker< / a > < / li >
2001-10-30 20:51:17 +08:00
< / ul > < / td > < / tr >
< / table >
< / td > < / tr > < / table > < / td >
< td valign = "top" bgcolor = "#8b7765" > < table border = "0" cellspacing = "0" cellpadding = "1" width = "100%" > < tr > < td > < table border = "0" cellspacing = "0" cellpadding = "1" width = "100%" bgcolor = "#000000" > < tr > < td > < table border = "0" cellpadding = "3" cellspacing = "1" width = "100%" > < tr > < td bgcolor = "#fffacd" >
2002-05-20 14:51:05 +08:00
< p > Starting with 2.4.7, libxml makes provisions to ensure that concurrent
2001-10-30 20:51:17 +08:00
threads can safely work in parallel parsing different documents. There is
however a couple of things to do to ensure it:< / p >
< ul >
< li > configure the library accordingly using the --with-threads options< / li >
< li > call xmlInitParser() in the " main" thread before using any of the
libxml API (except possibly selecting a different memory allocator)< / li >
< / ul >
< p > 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:< / p >
< ul >
< li > concurrent loading< / li >
< li > file access resolution< / li >
< li > catalog access< / li >
< li > catalog building< / li >
< li > entities lookup/accesses< / li >
< li > validation< / li >
< li > global variables per-thread override< / li >
< li > memory handling< / li >
< / ul >
< p > XPath is supposed to be thread safe now, but this wasn't tested
seriously.< / p >
2002-02-13 17:19:28 +08:00
< p > < a href = "bugs.html" > Daniel Veillard< / a > < / p >
2001-10-30 20:51:17 +08:00
< / td > < / tr > < / table > < / td > < / tr > < / table > < / td > < / tr > < / table > < / td >
< / tr > < / table > < / td > < / tr > < / table >
< / body >
< / html >