Comment #0 by floating.point — 2014-10-22T08:29:16Z
import std.stdio, std.parallelism;
int[] buf = [1]; // int* buf = [1];
void main(){
writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in main before");
auto task = task!fun();
task.executeInNewThread();
task.yieldForce();
writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in main after");
}
void fun () {
writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in child before");
buf[0] = 2;
writeln("tls var addr = ", &buf,", ptr = ", buf.ptr, ", value = ", buf[0]," in child after");
}
produce output:
tls var addr = 1B21A0, ptr = 425080, value = 1 in main before
tls var addr = 1C93E8, ptr = 425080, value = 1 in child before
tls var addr = 1C93E8, ptr = 425080, value = 2 in child after
tls var addr = 1B21A0, ptr = 425080, value = 2 in main after
where 2 independent variables points to same global data
Comment #1 by dfj1esp02 — 2017-08-22T13:40:48Z
*** This issue has been marked as a duplicate of issue 2947 ***