[fpc-pascal] Strings and Multithreading (case)

Florian Klaempfl florian at freepascal.org
Mon Sep 15 11:14:44 CEST 2008

Nihilist schrieb:
> I thought about usings Objects in Multithreaded objects and had a look 
> at astrings.inc to get some inspiration.
> I had this problem:
> one global string
> two threads
> lets say, both threads set the string to nil. I belive there is such a case:
> Thread 1 checks for S=Nil an fpc_ansistr_decr_ref (svn version, 15.9.)
> Threadswitch to Thread 2
> Thread 2 checks runs the whole procedure, decrements reference count to 
> zero (only one reference (global)) and calls DisposeAnsiString

This is the fault: you are accessing one data location without any 


cannot be consider being an atomic operation. Even for ordinals this 
might be not valid:


might not be atomic on an smp if <longint> is not aligned (on x86).

More information about the fpc-pascal mailing list