https://issues.dlang.org/show_bug.cgi?id=17476

          Issue ID: 17476
           Summary: Static fields don't seem to be reliably initialized
                    when using parallel()
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P1
         Component: phobos
          Assignee: [email protected]
          Reporter: [email protected]

```
import std.stdio;
import std.parallelism;

struct Params
{
    static string path = "/some/string/initializer";
}

void main()
{
    Params.path = "foobar";

    foreach (_; parallel([1, 2, 3, 4]))
    {
        writefln("%s", Params.path);
    }
}
```

Run this a few times, and each time the results will be wildly different:

```
~/dev/d test.d * $ dmd -run test.d
foobar
/some/string/initializer
/some/string/initializer
/some/string/initializer

~/dev/d test.d * $ dmd -run test.d
/some/string/initializer
foobar
/some/string/initializer
/some/string/initializer

~/dev/d test.d * $ dmd -run test.d
foobar
foobar
/some/string/initializer
/some/string/initializer
```

--

Reply via email to