OK, It works, thanks.
// dlang tries to use the type system to make one be clear about
what data is shared between potentially concurrent threads.
// You need that data to be "shared" before you can send it
between threads.
// Andy
import std.concurrency;
import std.stdio;
void main(){
int N=10;
shared int[] arr1=new int[N];
for(int i; i<N; i++){arr1[i]=i;}
writeln("Main thread, msg= ", arr1);
auto j=spawn(&fun);
j.send(thisTid, arr1);
assert(receiveOnly!Tid()==j);
}
void fun(){
auto msg= receiveOnly!(Tid, shared int[])();
writeln("child thread, msg= ", msg[1]);
msg[0].send(thisTid);
}
./a.out
Main thread, msg= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
child thread, msg= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]