On Sat, 19 May 2012 04:16:39 -0400, luka8088 <luka8...@owave.net> wrote:
Hello to all,
I would like to know if D guarantees that access to primitive variable
is atomic ?
I was looking for any source of information that says anything about
unsynchronized access to primitive variables. What I want to know is if
it is possible (in any way and any OS / hardware) for the following code
to output anything other then 1 or 2:
import std.stdio;
import core.thread;
void main () {
int value = 1;
(new Thread({ value = 2; })).start();
writeln(value);
}
Thanks !
It depends on hardware architecture. loads and stores of word sizes are
generally atomic. A better (more portable) version would be to make value
size_t or ptrdiff_t, which should mimic CPU word size.
In very crude multithreading apps, I rely on this all the time. But you
have to be careful not to change the value in more than one thread, or you
are subject to racing.
-Steve