On Tuesday, 13 June 2023 at 17:12:41 UTC, Anonymouse wrote:
On Tuesday, 13 June 2023 at 17:06:55 UTC, mw wrote:
Does anyone know how to fix it? or any work-around?


Thanks.

I don't know if it's *correct* or not, but I think I did this at the time to work around it.

```
shared string[string] aa;

void main()
{
    auto aaTemp = [ "abc" : "123" ];
    aa = cast(shared)aaTemp;
}
```

Thanks, I just did a simple test:

https://gist.github.com/run-dlang/88cefdde8bb7f61f173ad11b2a03d5ee

(BTW, https://run.dlang.org/ is not stable these few days).

```
import core.thread;
import std;
import std.parallelism;

shared string[string] aa;

void fun() {
  foreach (i; 0 .. 5) {
    writeln("fun", i, aa);
    foreach (num; parallel(iota(5))) {
        // writeln(num);
    }
    Thread.sleep(5.seconds);
  }
}


void main() {
    writeln("start", aa);
    auto aaTemp = [ "abc" : "123" ];
    aa = cast(shared)aaTemp;
    writeln(aa);
    foreach (num; parallel(iota(5))) {
      auto t = new Thread({fun();}).start();
    }
}
```

run result:
```
start[]
["abc":"123"]
fun0["abc":"123"]
fun0["abc":"123"]
fun0["abc":"123"]
fun0["abc":"123"]
fun0["abc":"123"]
fun1["abc":"123"]
fun1["abc":"123"]
fun1["abc":"123"]
fun1["abc":"123"]
fun1["abc":"123"]
fun2["abc":"123"]
fun2["abc":"123"]
fun2["abc":"123"]
fun2["abc":"123"]
fun2["abc":"123"]
fun3["abc":"123"]
fun3["abc":"123"]
fun3["abc":"123"]
fun3["abc":"123"]
fun3["abc":"123"]
fun4["abc":"123"]
fun4["abc":"123"]
fun4["abc":"123"]
fun4["abc":"123"]
fun4["abc":"123"]
```

looks like different threads can read the same `aa` contents. So at least it's working.

Reply via email to