关于Socket服务端异步收发的性能有关问题

关于Socket服务端异步收发的性能问题最近尝试写一个基于Socket收发的服务端。一开始采用了同步的收发模式:

关于Socket服务端异步收发的性能问题
最近尝试写一个基于Socket收发的服务端。
一开始采用了同步的收发模式:

监听线程函数()
{
  变量处理……
   
  while(true)
  {
  接收;
  }
}

问题不大。后来考虑到性能的优化问题,便改作了异步收发模式:

监听线程函数()
{
  变量处理……
   
  while(true)
  {
  异步接收;//BeginAccept()
  }
}

然后CPU使用率一下子飙升至100%。
将异步接收的代码去掉,把监听线程函数改为一个空的死循环,CPU依然100%。
不解,此时循环的负担已经降至最低了。于是又将代码改为如下形式:

监听线程函数()
{
  变量处理……
   
  while(true)
  {
  Thread.sleep(200);
  异步接收;
  }
}

CPU一下子就降了下来。

因为平时搞网络编程搞的不是很深,所以不明白其中的原因(尽管这可能是小白级的问题),请教各位大侠~~~



[解决办法]
写个死循环 执行以下,看看cpu 就知道了

Thread.sleep(200); 是正确的。

不知道使用的阻塞还是非阻塞? TCP 还是UDP


[解决办法]
你的异步接收时怎么实现的?

while(true)
{
异步接收;//BeginAccept()
}

貌似这么做也只是单线程而已啊

[解决办法]
非阻塞可以 达到 多线程效果. 却不占用多线程的开销.