【发布时间】:2014-06-06 10:43:48
【问题描述】:
我正在开发一个用于学习目的的多线程服务器应用程序。我现在的问题是接收数据。第一次编写应用程序时,我使用了 WSAAsyncSelect,但我不喜欢它的工作方式(在我看来,窗口依赖很愚蠢,即使你隐藏了窗口。)。所以我重新编写了它,现在我有一个线程通过连接的客户端并检查是否有任何数据要接收并将其传递给工作线程。这适用于少量客户,但我认为对于大量客户可能会延迟其他客户太多。我读过的一个解决方案是为每个客户端设置一个线程,但存在线程限制。另一种解决方案是 IOCP ( Windows ),但我需要找到一个好的文档,因为我发现的示例有点太模棱两可了(我可能是这里的问题)
我在 Microsoft Visual Studio 2013 下使用 C/C++ 的语言(WinSock,但我想以多平台方式编写)
【问题讨论】:
-
我认为,zeromq guide 是您开始的正确位置。在那里,您将了解处理套接字、线程和异步性时的注意事项。
-
另一个很好的来源是Boost.Asio 文档
标签: c++ multithreading sockets c++11