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
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel