looking for work-around: _d_assocarrayliteralTX segfault assigning a shared associative array an AA literal
mw
mingwu at gmail.com
Tue Jun 13 17:42:08 UTC 2023
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.
More information about the Digitalmars-d-learn
mailing list