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

Reply via email to