什么时候应该使用select与多线程进行比较?
我刚开始学习为Linux服务器编写代码。什么时候应该使用select与多线程进行比较?,c,linux,multithreading,select,server,C,Linux,Multithreading,Select,Server,我刚开始学习为Linux服务器编写代码。 在用多线程编写了一个简单的服务器之后,我不知道什么时候应该使用select 我的多线程服务器非常简单: while(true) { client = accept(sock); pthread_create(client, processClientFunc); } 每个客户端都有自己的线程,因此可以与服务器通信。 我听说有三个功能:select、poll和epoll 谷歌告诉我,select可以监控多个文件描述符。 好吧,我明白了,但
在用多线程编写了一个简单的服务器之后,我不知道什么时候应该使用
select
我的多线程服务器非常简单:
while(true)
{
client = accept(sock);
pthread_create(client, processClientFunc);
}
每个客户端都有自己的线程,因此可以与服务器通信。我听说有三个功能:
select、poll和epoll
谷歌告诉我,
select
可以监控多个文件描述符。好吧,我明白了,但我认为多线程可以满足所有需求。此外,我认为即使我使用
select
,我仍然需要使用多线程
所以我的问题是:我们什么时候应该使用
select
我从来没有使用过selectimf,因为如果我回忆正确,poll可以提供更好的可伸缩性。我在处理大量连接并尽量减少使用的线程数时使用poll。多线程是昂贵的,而且通常是不必要的,除非您有很多连接,或者您的连接在计算/阻塞方面是昂贵的。使用位置合适的poll或select将允许您在一个线程中处理它们,甚至可以接受套接字并处理客户端(至少使用poll)
因此,只要您有许多便宜的连接可以节省多线程开销,就可以使用poll/select。请参见: