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