xml/libxml thread safety

M

Mage

Hello,


my simple question is that is libxml thread-safe? I would like to use it
in production environment.

Mage
 
R

Ross Bamford

my simple question is that is libxml thread-safe? I would like to use it
in production environment.

(I assume you mean libxml-ruby, rather than libxml itself?)

The simple answer is probably not. We do have an open bug[1] regarding
cross-thread synchronisation, and though I've been unable to reproduce
it so far, I take that to mean it's probably platform/configure/compiler
specific. Most of the other open bugs pertain to pointer handling, and
have the potential to get 'interesting' in a multi-threaded program.

I'm working on fixing most of this and implementing open feature
requests for 0.4.0, but currently I'm short on free time and apparently
kind of on my own on the project. I guess I might be able to give a more
positive answer to the same question early next year...

Meanwhile, you might want to check out ruby-xml-smart:
http://raa.ruby-lang.org/project/ruby-xml-smart/
 
M

Mage

Ross said:
my simple question is that is libxml thread-safe? I would like to use it
in production environment.

(I assume you mean libxml-ruby, rather than libxml itself?)
True.
The simple answer is probably not. We do have an open bug[1] regarding
cross-thread synchronisation, and though I've been unable to reproduce
it so far, I take that to mean it's probably platform/configure/compiler
specific. Most of the other open bugs pertain to pointer handling, and
have the potential to get 'interesting' in a multi-threaded program.
I simply want to generate an xml file with root 'ads' and nodes 'ad'
(and subnodes of course).
Since the generation uses network traffic and image manipulation I think
multithreading will enchant the performance.

Should I create every 'ad' node with Monitor.synchronize? Is this
enough? The subnodes of 'ad' nodes won't share any data.

Mage
 
R

Ross Bamford

Ross said:
my simple question is that is libxml thread-safe? I would like to use it
in production environment.
The simple answer is probably not. We do have an open bug[1] regarding
cross-thread synchronisation, and though I've been unable to reproduce
it so far, I take that to mean it's probably platform/configure/compiler
specific. Most of the other open bugs pertain to pointer handling, and
have the potential to get 'interesting' in a multi-threaded program.
I simply want to generate an xml file with root 'ads' and nodes 'ad'
(and subnodes of course).
Since the generation uses network traffic and image manipulation I think
multithreading will enchant the performance.

Should I create every 'ad' node with Monitor.synchronize? Is this
enough? The subnodes of 'ad' nodes won't share any data.

To be completely honest, I really don't know - I've still to reproduce
any multithread-related bugs here, but I *do* know we have a few open
problems that *could* be exasperated in a multithreaded program. My only
remotely useful advice right now would be "try it", but then probably
not in a production environment... The lib _should_ be thread safe, so
if you do try it, and find anything goes wrong, I'd appreciate a bug
report ;)

Sorry I can't be more help... :(
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top