【问题标题】:When should I use select comparing with multithreading?何时应该使用 select 与多线程进行比较?
【发布时间】:2017-05-21 10:51:08
【问题描述】:

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

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

while(true)
{
    client = accept(sock);
    pthread_create(client, processClientFunc);
}

每个客户端都有自己的线程,因此它可以与服务器通信。

我怎么听说有三个函数:select, poll and epoll

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

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

【问题讨论】:

标签: c linux multithreading select server


【解决方案1】:

我自己从未使用过 select,因为如果我没记错的话,poll 可以提供更好的可扩展性。当我处理大量连接并且试图最小化使用的线程数时,我使用 poll 。多线程是昂贵的并且通常是不必要的,除非你有很多连接或者你的连接在计算/阻塞上很昂贵。使用适当的 poll 或 select 将允许您在一个线程中处理它们,甚至接受套接字并处理客户端(至少使用 poll)。

因此,只要您有许多廉价的连接以节省多线程开销,请使用轮询/选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2021-08-01
    • 2020-05-09
    • 2015-06-25
    • 2023-03-05
    相关资源
    最近更新 更多