On Friday, 10 November 2017 at 14:27:41 UTC, bauss wrote:
On Friday, 10 November 2017 at 14:13:26 UTC, DrCataclysm wrote:
On Friday, 10 November 2017 at 13:50:56 UTC, rikki cattermole
wrote:
Remember this bit: Everything on the heap, is not
thread-local, it is global. This includes everything inside a
class.
When you synchronize (statement) it is locking and then
unlocking a mutex. A class has a mutex, simple! It only
prevent multiple threads modifying a single thing at specific
times, thats all.
this is my implementation of Accept
private void Accept(){
// start accepting in a different thread
try{
_client = _server.accept();
emit(ClientConnected(_client.remoteAddress.toAddrString));
auto _acceptTask = task(&this.Accept);
_acceptTask.executeInNewThread();
Receive();
}
catch (SocketAcceptException e){
writeln("Error while accepting connection: " ~
e.msg);
}
}
Is _client on the Heap or the Stack? If it is on the Stack,
how would i get in on the Heap?
_client is allocated in the heap.
Socket accept(); returns the socket created from Socket
accepting().
Which is like below:
protected Socket accepting() pure nothrow
{
return new Socket;
}
thank you, i thought i was going mad.
It is working now. The problem was that the debugger in eclipse
ddt seems to completely broken. If i run it directly from bash it
is working.
One last question: is there a function in the std to wait for a
task to finish within a time limit?