MSDN states that
long, ulong, double, and decimal, as well as user-defined types, are not guaranteed to be atomic 5.5 Atomicity of variable references
Will Volatile.Write Method (Double%, Double) work as atomic operation? If so how this is guaranteed?
Is it safe to do Volatile.Write(ref mydouble, value); in one thread and Volatile.Read(ref mydouble) in another where mydouble has double type?
That was general question. Another question - what should I do in this particular situation:
No, Volatile is not atomic, and it is not safe in an SMP (>1 processor) system to assume so. It is safe on a uniprocessor machine.
Unless you really need the performance, you probably want Interlocked instead, either Interlocked.Exchange or Interlocked.Read.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With