Thank you for your reply. I have been migrating some socket/thread code from D1
to D2 lately. One of changes is that Thread.this() must have super(&run) in it.
It seems when one of the thread doesn't have that line, strange things happen.
Can anyone confirm this code to reproduce error:
import std.stdio;
import std.socket;
import core.thread;
class SaboteurThread : Thread {
this(){
// super(&run); // comment this line for exception to be thrown when socket
is created in other thread
}
void run(){
writeln("Saboteur running");
while(true){}
}
}
class SockThread : Thread {
this(){
super( &run );
}
void run(){
try {
auto s = new TcpSocket; // will throw wsock error WSANOTINITIALISED
(10093) on windows if SaboteurThread.this() has no super(&run) in it
writeln("socket created");
} catch (Exception e){
writeln(e);
}
while(true){}
}
}
void main(){
auto x = new SaboteurThread;
x.start;
auto s = new SockThread;
s.start;
while(true){}
}