gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:44 25 4
gpt4 key购买 nike

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

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

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

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

我怎么听说有三个函数:select、poll 和 epoll

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

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

最佳答案

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

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

关于c - 什么时候应该使用 select 与多线程进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com