gpt4 book ai didi

linux - 线程如何平等地服务两个数据套接字(而不是控制套接字)?

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

假设我们有一个单线程应用程序,它需要通过将 1G 字节的数据分别写入两个单独的 tcp 套接字(每个客户端一个套接字)来服务两个客户端,在这种情况下,线程如何在两个任务上工作平等地、持续地?

我认为这个问题存在于像Apache这样的服务器应用程序中,以Apache Web Server为例,Apache为自己设置了一个最大线程限制,说是MAX_THREADS,如果有(MAX_THREADS + 1)个未完成的请求和那里有套接字,这意味着至少一个线程必须平等地处理两个套接字。那么 apache 将如何处理这种情况呢?

史蒂夫

最佳答案

通常当我们想在单线程应用程序中处理多个套接字时,通常会使用以下系统调用之一

select (http://en.wikipedia.org/wiki/Select_%28Unix%29)

poll (http://linux.die.net/man/2/poll)

epoll (http://en.wikipedia.org/wiki/Epoll)

有关这些调用的更多信息,请参见手册页。

总体思路是让单线程不被阻塞等待获取资源,并定期检查是否有数据可用于发送或接收

关于linux - 线程如何平等地服务两个数据套接字(而不是控制套接字)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354562/

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