Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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
什么时候应该使用select与多线程进行比较?_C_Linux_Multithreading_Select_Server - Fatal编程技术网

什么时候应该使用select与多线程进行比较?

什么时候应该使用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可以监控多个文件描述符。 好吧,我明白了,但

我刚开始学习为Linux服务器编写代码。
在用多线程编写了一个简单的服务器之后,我不知道什么时候应该使用
select

我的多线程服务器非常简单:

while(true)
{
    client = accept(sock);
    pthread_create(client, processClientFunc);
}
每个客户端都有自己的线程,因此可以与服务器通信。

我听说有三个功能:
select、poll和epoll

谷歌告诉我,
select
可以监控多个文件描述符。
好吧,我明白了,但我认为多线程可以满足所有需求。此外,我认为即使我使用
select
,我仍然需要使用多线程


所以我的问题是:我们什么时候应该使用
select

我从来没有使用过selectimf,因为如果我回忆正确,poll可以提供更好的可伸缩性。我在处理大量连接并尽量减少使用的线程数时使用poll。多线程是昂贵的,而且通常是不必要的,除非您有很多连接,或者您的连接在计算/阻塞方面是昂贵的。使用位置合适的poll或select将允许您在一个线程中处理它们,甚至可以接受套接字并处理客户端(至少使用poll)

因此,只要您有许多便宜的连接可以节省多线程开销,就可以使用poll/select。

请参见: