Wait-free thread communication

Andy Smith via Digitalmars-d digitalmars-d at puremagic.com
Sat Jan 9 09:44:26 PST 2016


On Saturday, 9 January 2016 at 17:24:47 UTC, Jin wrote:
> On Saturday, 9 January 2016 at 16:29:07 UTC, Ola Fosheim 
> Grøstad wrote:
>> They have to be atomic if you want your code to be portable.
>
> Do not want yet :-)

Okay I've just refreshed my mental X86/64 memory model :-) What 
you've done should be okay from a CPU-reordering perspective. In 
x86/64 Loads are not reordered with other loads and stores are 
not reordered with other stores. So from a CPU perspective you 
should be okay on X86/64.

There's still a grey area for me around possible *compiler* 
re-orderings... there's nothing to stop the compiler reordering 
those two lines with respect to each other because from an 
'as-if-sequential' perspective those two operations are 
commutative. Unfortunately I'm not well versed enough on the 
internals of the three main compiler versions to give an opinion 
on whether this will be a problem or not :-(

If your version is working for you on your platform/compiler, I'd 
recommend maybe being a bit conservative and wrap your code with 
appropriate version blocks until you know the answer to these 
questions for the other platforms/compilers (ARM, GDC, LDC etc.). 
And put appropriate explanation why that's the case in your 
README.md. I think that's just a basic courtesy to other users 
that you don't let them walk over a minefield without fair 
warning :-)

Cheers,

A.















More information about the Digitalmars-d mailing list