在Internet上的任何地方,要继续监听传入的套接字连接,服务器都需要运行无限循环。为什么我们对套接字服务器使用无限循环来保持监听状态?
例如:
while (true) {
accept a connection;
create a thread to deal with the client;
}
这是21世纪,一切都是技术,因此,有没有其他方法可以替代无限循环。我们是否认为无限循环会浪费CPU周期,并会增加服务器的额外负载。诸如WhatsApp,Messenger,Viber等服务器的聊天应用程序是否也在运行无限循环方法?
我希望真正的怪人会回答而不是不赞成我的问题。谢谢
答案 0 :(得分:2)
在您看到的所有示例中,“接受连接”行都是阻塞调用。因此,您不会浪费CPU周期。在建立新连接之前,代码将停止。然后,它创建处理线程并再次开始等待。