Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 网络服务器的效率和超时_C++_Sockets_Networking_Timeout_Semaphore - Fatal编程技术网

C++ 网络服务器的效率和超时

C++ 网络服务器的效率和超时,c++,sockets,networking,timeout,semaphore,C++,Sockets,Networking,Timeout,Semaphore,我所处的情况是,我必须“ping”[而不是ICMP](ping的意思是,使用我制定的应用程序协议向多个套接字发送信号,以查看它们是否已死亡[类似于看门狗计时器]) 由于我在库中仅限于异步选择(绑定到窗口消息循环),因此我决定提高它的效率,而不是通过GUI消息直接接收数据——通过数据结构将数据转发到线程池,并让线程队列处理它 对,我最初的想法是使用两个信号量——一个用于处理阻塞队列(IO请求),另一个用于处理所有超时ping 这似乎是一个合理的想法吗?是否有更好的解决方案;也许是计时器、互斥或其他

我所处的情况是,我必须“ping”[而不是ICMP](ping的意思是,使用我制定的应用程序协议向多个套接字发送信号,以查看它们是否已死亡[类似于看门狗计时器])

由于我在库中仅限于异步选择(绑定到窗口消息循环),因此我决定提高它的效率,而不是通过GUI消息直接接收数据——通过数据结构将数据转发到线程池,并让线程队列处理它

对,我最初的想法是使用两个信号量——一个用于处理阻塞队列(IO请求),另一个用于处理所有超时ping

这似乎是一个合理的想法吗?是否有更好的解决方案;也许是计时器、互斥或其他什么

我可能要问的第二个问题是——除了同步对象之外,还有其他方法可以创建阻塞容器吗?顺便说一下,我不接受睡眠(1)解决方案。
谢谢。

嗯。。您的信号量类是否有超时等待?是的,我确认整个问题“可以”用信号量解决,并且工作正常。我正在寻找一个替代方案,因为我相信有更好的解决方案。