W3C home > Mailing lists > Public > whatwg@whatwg.org > December 2009

[whatwg] providing a DOM API to workers without a thread-safe DOM implementation

From: Ian Hickson <ian@hixie.ch>
Date: Wed, 9 Dec 2009 18:55:21 +0000 (UTC)
Message-ID: <Pine.LNX.4.62.0912091851470.16061@hixie.dreamhostps.com>
On Wed, 9 Dec 2009, David Bruant wrote:
> Ian wrote:
> >
> > Since browsers don't have thread-safe DOM implementations, that's 
> > basically a non-starter. It doesn't matter that we aren't offering 
> > access to the same DOM in pages and workers; the actual innards of the 
> > DOM implementations aren't thread safe.
> > 
> > As soon as browsers are able to implement this, I'm sure it will be 
> > added to the spec.
>
> The point of my "Re: [whatwg] [WebWorkers] Advocation to provide the DOM 
> API to the workers" e-mail of the December 7th was to prove that we 
> don't even need a thread-safe implementation.

When I am referring to thread safety here I don't mean that it's not 
possible for a single DOM tree to be accessed from two threads. I mean 
that it's not possible for two DOM nodes from completely unrelated trees 
to exist on two threads, because the DOM implementations make use of 
global state (e.g. global atoms, memory pools) that are not written such 
that they can be accessed from code in multiple threads (e.g. because the 
memory allocator doesn't use locks to ensure that the memory pool is only 
mutated by one thread at once).


> The requirement is just to have 2 implementations (which can be the 
> same, but it would be a "coincidence") one for the main browsing 
> context, the other for workers.

Whether it's a second implementation or one implementation that is made 
thread-safe, UAs don't currently have it. As soon as they do, we'll be 
able to add DOM APIs to workers.


> Then, I'm describing a way to communicate (through postMessage and the 
> onmessage handler) which allow to send and recieve DOM objects 
> (Node/Element/Document/DocumentFragment) in a safe way (basically, by 
> breaking the references to DOM objects coming from another 
> implementation and I think that I have enumerated all of them and found 
> a proper solution for each).

This is not the problem.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
Received on Wednesday, 9 December 2009 10:55:21 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:08:54 UTC