【发布时间】:2012-09-02 14:51:46
【问题描述】:
我想使用 C++11 和标准 linux C-Librarys 创建一个多线程套接字服务器。
执行此操作的最简单方法是为每个传入连接打开一个新线程,但必须有其他方法,因为 Apache 不这样做。据我所知,Apache 在一个线程中处理多个连接。如何实现这样的系统?
我想创建一个线程,始终监听新客户端并将这个新客户端分配给一个线程。但是,如果所有线程当前都在执行“select()”,具有无限超时且已分配的客户端都没有执行任何操作,则客户端可能需要一段时间才能使用。
所以“select()”需要超时。将超时设置为 0.5 毫秒会很好,但我想工作量可能会增加太多,不是吗?
谁能告诉我,你们将如何实现这样一个系统,为每个线程处理多个客户端? PS:希望我的英语足够好让你明白我的意思;)
【问题讨论】:
-
我做了,但我发现的只是为每个连接使用一个新线程的示例
-
"我想使用 C++11 和标准 linux C-Librarys 创建一个多线程套接字服务器。" 为什么?像理智的人一样使用Boost.Asio。 ;-]
-
如果我找不到自己开发的方法,我会这样做;)但我想自己创建它,因为我是 C++ 新手,我喜欢构建这样的东西来让语言知道:)
-
有很多有用的信息 - stackoverflow.com/questions/11687215/…