Every Node in the Xerces DOM is also its child NodeList (i.e. node == 
node.getChildNodes()). You get the same object every time. If a single 
thread is doing something like:

...
NodeList list = node.getChildNodes();
int length = list.getLength();
for (int i = 0; i < length; ++i) {
   for (int j = length - 1; j >= 0; --j) {
      Node nodeI = list.item(i);
      Node nodeJ = list.item(j);
      ...
   }
}

it's going to defeat the caching mechanism which was optimized for 
sequential access. We'll end up walking back and forth through the 
sibilings between i and j.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

[EMAIL PROTECTED] wrote on 07/24/2007 03:54:16 PM:

> Right. I wouldn't expect nodelists to be threadsafe, but do we reuse
> nodelists, or would independent calls to retrieve the same nodelist 
> return separate (non-entangled) objects?
> 
> I would expect the latter, since there could be several nodelist 
> accesses in progress at once even for a single thread.
> 
> As I said, trying to use the DOM as if it was partly thread-safe is 
> a cheat; you have to know exactly what you can and can't get away 
> with. It's better to implement proper thread-locking in the application 
code.
> 
> ______________________________________
> "... Three things see no end: A loop with exit code done wrong,
> A semaphore untested, And the change that comes along. ..."
> -- "Threes" Rev 1.1 - Duane Elms / Leslie Fish (http://www.ovff.
> org/pegasus/songs/threes-rev-11.html)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to