谁能帮助我回答有关epoll_wait的问题.
>使用许多线程在相同的fds集上调用epoll_wait以在大约100K活动套接字上提供服务是否过度?或者它只是足以创建只有1个线程来执行epoll_wait?
>例如,只有一个套接字准备好读取数据时,将从epoll_wait唤醒多少个线程?我的意思是,有两个或更多线程从epoll_wait唤醒但在结果事件中会有相同的fds的情况吗?
>在服务器中组织与许多活动客户端(例如50K)一起使用的线程的最佳方法是什么.我认为最好的方法是:1个I / O工作线程,它可以执行epoll_wait和i / o操作.许多数据处理线程将处理从I / O工作线程接收的数据(可能需要很长时间,例如任何游戏逻辑)并为I / O工作线程编写新数据以发送给客户端.我是对的,或者任何人都可以帮助我找出组织这种方法的最佳方法吗?
在此先感谢,Valentin
解决方法
>使用epoll时,您希望将线程总数调整为要用于处理的物理CPU核心(或超线程调度单元)的数量.仅使用一个线程进行工作意味着一次最多只有一个核心处于活动状态. >这取决于epoll文件描述符的模式.事件可以是“边缘触发”,意味着它们只是原子地发生一次,或者“水平触发”意味着如果缓冲区中有空间,任何调用者都会获得事件. >没有足够的信息可以说.为简单起见,我建议根本不要使用特殊用途线程,只需在收到它的线程中处理每个事件的“命令”.但显然这取决于您的应用程序的性质.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。