[fpc-devel] volatile variables
Michael Schnell
mschnell at lumino.de
Tue Jun 28 14:32:44 CEST 2011
On 06/28/2011 01:20 PM, Henry Vermaak wrote:
>
>
> "Operations on volatile variables are not atomic,
That is of course known.
> nor do they establish a proper happens-before relationship for threading.
I see. So maybe part of my question is invalid.
But as pthread_mutex (and the appropriate Windows stuff) contains a
memory barrier, same does enforce memory ordering even in an SMP
environment, regarding cache operations and with CPUs that do on-the fly
reordering.
So, regarding C, I understand that (even in a single CPU environment):
If all accesses to a variable are protected by a MUTEX, multiple threads
will use the variable as expected, only if it is defined as volatile.
Otherwise is might be cached in registers and one thread's writing to (i
C code but not compiled that way) it might be unnoticed by the other thread.
Now how is the volatile state defined in Pascal and how can a heap
variable be defined to be handled as volatile ?
-Michael
More information about the fpc-devel
mailing list