[Lazarus] thread safe

Michael Schnell mschnell at lumino.de
Tue Jun 28 15:00:58 CEST 2011


On 06/28/2011 02:47 PM, Andrew Brunner wrote:
> Yes, any object that requires atomic features will employ a memory 
> barrier.
> That is to say the MB is employed in order for the spincount to be
> accurate across all cores.
As for a user program the only way to handle atomic operations is to 
protect them by a MUTEX (TCriticalSection in FPC) and same does include 
the memory barrier we hopefully are safe.
> My engine had worked fine on a tripple core AMD.
>   It wasn't until I upgraded to the 6 core system did I have to start
> looking into what was causing random problems with pointer
> assignments.
Of course it might be possible that it just was good luck that it worked 
on the 3-Core (because the bad timing condition did not ever occur). But 
there also might be some bug somewhere.

As said before besides all this complicated stuff the critical variable 
needs to be handled as volatile by the compiler (not caching it in a 
register while opening or closing the critical section). I have no Idea 
how this can be enforced in FPC.

-Michael




More information about the Lazarus mailing list