druntime thread_needLock()

Sean Kelly sean at invisibleduck.org
Sat Dec 6 18:48:40 PST 2008


Fawzi Mohamed wrote:
> On 2008-12-06 17:13:34 +0100, Sean Kelly <sean at invisibleduck.org> said:
> 
>> Fawzi Mohamed wrote:
>>>
>>> a memory barrier would be needed, and atomic decrements, but I see 
>>> that it is not portable...
>>
>> It would also somewhat defeat the purpose of thread_needLock, since 
>> IMO this routine should be fast.  If memory barriers are involved then 
>> it may as well simply use a mutex itself, and this is exactly what 
>> it's intended to avoid.
> 
> the memory barrier would be needed in the code that decrements the 
> number of active threads, so that you are sure that no pending writes 
> are still there, (that is the problem that you said brought you to 
> switch to a multithreaded flag), not in the code of thread_needLock...

Not true.  You would need an acquire barrier in thread_needLock. 
However, on x86 the point is probably moot since loads have acquire 
semantics anyway.

> But again I would say that this optimization is not really worth it (as 
> you also said it), even if it is relevant for GUI applications.

:-)


Sean



More information about the Digitalmars-d mailing list