Henry Vermaak wrote:
On 27/06/11 23:31, Andrew Brunner wrote:
2.) Execution Order. A critical section does not protect or ensure
that code will be executed in any particular order. This is where
How do you know this? Unfortunately I can't read the code for the
Windows critical sections and the documentation doesn't explicitly state
anything, but at least pthread mutex guarantees a memory barrier. So if
you're using the fpc rtl critical sections on unix (which uses
pthread_mutex), your statement is false.
You'll have to read the generated assembler for Windows critical
sections. My hunch would be that they use memory barriers, too.
On processors that support them, which I think excludes x86.
My understanding is that in the general case membars are there to
enforce sanity when a processor can reorder memory accesses. As such
they don't guarantee anything either way when multiple threads are
considered on an SMP/multicore system, they're just part of the overall
picture.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus