【发布时间】:2015-01-20 15:26:13
【问题描述】:
您好,我正在使用 TCP 用 C 语言在 linux 上编写服务器。
服务器必须处理多个连接(最多大约 5000 个)。 5000 是最大值,但平均值应该在 500 - 1000 左右。
我想知道在处理客户端连接和监听时使用什么更好。如果最好为每个客户端使用一个线程或使用select()函数。
1) 线程 - 每个客户端都有自己的线程。该线程正在监听客户端的请求并进行处理。
Select 函数 - 一个带有 select 的循环,所有请求都在其中处理。 (类似于http://www.binarytides.com/multiple-socket-connections-fdset-select-linux/)
如果我要使用线程,它将需要大量内存和 cpu 性能。因此,我更喜欢使用 select 但我不确定 select 是否可以处理这么多的连接,以及它是否不会减慢来自服务器的响应(存在必须通过客户端套接字的循环)。那么这么多客户可以使用 select 吗?
我一直在寻找我的答案,但是我没有找到它,或者我只是不知道要搜索什么。所以请不要难过。
【问题讨论】:
标签: c linux multithreading sockets server