Socket server + thread: cpu usage

Tim via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Apr 29 10:35:07 PDT 2014


On Tuesday, 29 April 2014 at 17:19:41 UTC, Adam D. Ruppe wrote:
> On Tuesday, 29 April 2014 at 17:16:33 UTC, Tim wrote:
>> Is there anything I'm doing wrong?
>
> You should be using a blocking socket. With them, the operating 
> system will put your thread on hold until a new connection 
> comes in. Without them, it will endlessly loop doing absolutely 
> nothing except checking if a new connection is there yet. 
> Horribly, horribly inefficient.

Alright, this would solve the server-cpu-usage-problem. But what 
about incoming connections? When I create a new thread and use 
non-blocking socket I've exactly the same problem. I can also 
solve this problem by using blocking sockets, but what happens if 
I do the following:

while(oMyBlockingSocket.isAlive)
{
     oMyBlockingSocket.receive(...);
}

... and close the connection on the client side? I would never 
receive anything and receive() waits never comes back or would 
this throw an exception or similar?


More information about the Digitalmars-d-learn mailing list