Thanks Jonathon, these are the kinds of warnings I was looking for.

There are _no_ guarantees of atomicity with shared. Yes, on some
architectures, writing a word size might be atomic, but the language
guarantees no such thing.

I was looking narrowly at x86, which I *think* such a statement is safe to say for. But you're absolutely right that I should probably safeguard against the possibility that something could go wrong there.

either that or
you have to mess around with core.atomic, which is the kind of code that is _very_ easy to screw up, so it's generally advised not to bother with
core.atomic unless you actually _need_ to.

It will at least ensure sequential consistency, atomic load/store, and atomic operations (via atomicOp), will it not?

shared really doesn't guarantee anything. It just means that you can access that object across threads, which means that you must do all the work to make sure that it's protected from being accessed by multiple threads at the same
time.

Fair enough. It will force the compiler to write to memory immediately though, rather than keep shared values sitting in registers, correct?

Reply via email to