On Dec 15, 2010, at 4:28 AM, Steve Block wrote:

> I have a question about whether WebCore code makes assumptions about
> the atomicity of certain read/write operations.
> 
> The particular instance I'm interested in is IconDatabase, where
> m_threadTerminationRequested is written to from the main thread (in
> close() for example) and read from the DB thread (in
> syncThreadMainLoop()) without any locking.  It looks like the code is
> written such that there's no particular synchronization requirement in
> terms of the order in which the value is set and read. But there's a
> risk of a garbled read in the case of a simultaneous read and write
> from the two threads.
> 
> I assume that the lack of locking is an intentional decision, based on
> the fact that on all relevant architectures, a boolean read/write is
> atomic?

Correct - or, at least, at the time it was correct.  Have you discovered a 
relevant architecture where it is no longer correct?

> Is this a general WebCore policy? It would be great if somebody could
> confirm this, or point out why I'm wrong.

I wouldn't be surprised if there were other examples of an unprotected thread 
shared boolean in either WebCore or any platform's WebKit.

I *would* be surprised if there was an example of *any other data type* that 
was shared between threads unprotected.

That said, I don't think we have any general WebCore policies about multithread 
practices.  There might be value in such a document.

~Brady

> 
> Thanks,
> Steve
> 
> -- 
> Google UK Limited
> Registered Office: Belgrave House, 76 Buckingham Palace Road, London SW1W 9TQ
> Registered in England Number: 3977902

_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to