免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5847 | 回复: 10
打印 上一主题 下一主题

没明白多线程+EPOLL [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-22 00:38 |只看该作者 |倒序浏览
服务器模型里面不是每个请求来了会用一个线程处理业务逻辑么,在这个线程里面只需处理这个请求的FD啊,还用EPOLL干嘛?没明白

谁能简要用代码说明一下多线程+EPOLL模型到底怎么回事?

这个问题困惑我一个多月啦

谢谢

论坛徽章:
0
2 [报告]
发表于 2009-10-22 08:49 |只看该作者
一般来说,要么事件驱动(如epoll),要么多线程,要么多进程,把这几个综合起来的,感觉更加麻烦。

论坛徽章:
0
3 [报告]
发表于 2009-10-22 12:40 |只看该作者
单线程用epoll,不能发挥多核

多线程不用epoll,每连接一线程,线程数增加较多时,负荷非线性增加

因此才有固定数量多线程+epoll,希望能够提高效率。复杂性自然提高,所以不是越高效越好,先看有没有必要。

论坛徽章:
0
4 [报告]
发表于 2009-10-22 13:33 |只看该作者
应该是一个主通信线程epoll所有需要监控的FD,有事件交给多线程去处理。。。。。

架构中瓶颈不在IO,而在上层应用,所以要用多线程去处理上层应用。

而非“单线程用epoll,不能发挥多核”!

[ 本帖最后由 zsniper 于 2009-10-22 13:35 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-10-22 15:56 |只看该作者
学习了

论坛徽章:
0
6 [报告]
发表于 2009-10-22 17:50 |只看该作者
嗯,说的好

论坛徽章:
0
7 [报告]
发表于 2009-10-22 19:37 |只看该作者
原帖由 zsniper 于 2009-10-22 13:33 发表
应该是一个主通信线程epoll所有需要监控的FD,有事件交给多线程去处理。。。。。

架构中瓶颈不在IO,而在上层应用,所以要用多线程去处理上层应用。

而非“单线程用epoll,不能发挥多核”!

说的很好,学习了。
网游服务器端大概就这个策略。

论坛徽章:
0
8 [报告]
发表于 2009-10-22 23:16 |只看该作者
原帖由 bert1984 于 2009-10-22 19:37 发表

说的很好,学习了。
网游服务器端大概就这个策略。



有谁还能发点说明框架的简要代码吗?这样能说得更清楚一点......非常期待

论坛徽章:
0
9 [报告]
发表于 2009-10-23 12:46 |只看该作者
既然用了epoll, 那么, 线程就不应该看到fd, 而只看到的是一个一个的业务请求/响应. epoll将网络数据组装成业务数据后, 转交给业务线程进行处理. 这就是常说的半同步半异步. 处理业务请求时, 采用同步方式, 开多个线程. 处理网络数据时, 用异步方式, 将网络数据转换成业务请求.

并不是说单线程/进程用epoll, 多线程/进程就不用.

[ 本帖最后由 ideawu 于 2009-10-23 12:48 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-10-23 15:55 |只看该作者
原帖由 zsniper 于 2009-10-22 13:33 发表
应该是一个主通信线程epoll所有需要监控的FD,有事件交给多线程去处理。。。。。

架构中瓶颈不在IO,而在上层应用,所以要用多线程去处理上层应用。

而非“单线程用epoll,不能发挥多核”!



说的好~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP