免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xxxxxxxp
打印 上一主题 下一主题

[C++] [换个地方发]请教大牛:异步io的优点究竟在哪 [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
31 [报告]
发表于 2013-01-21 11:57 |只看该作者
回复 26# windoze


    原帖改正的话最好还是把错误的留一点痕迹,比如这样。不然别人看我的发帖会觉得很奇怪的= =

我记得网上好像有开源项目的,就一个epoll线程池内核,然后直接取数据到无锁队列什么的。

没听说过leader/follower架构呢,网上搜索了一下,这货和线程池有区别么= =无非就是一个自己手写的线程池罢了……我的架构里,leader和follower是分开的,其实我的模型就是经典的source/sink模型了。

论坛徽章:
0
32 [报告]
发表于 2013-01-21 12:29 |只看该作者
回复 28# starwing83

请教下,你的方案是n个线程做事件响应,m个线程做io操作对么?n==1?
如果我理解的没错的话,请问这种方案相对每个线程异步的做同样的事情有什么优势吗(像nginx那样)?
   

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
33 [报告]
发表于 2013-01-21 12:37 |只看该作者
回复 32# xxxxxxxp


    N不一定等于1,其实就是两个线程池互相不影响,一个是source,一个是sink。

这个方案的话,线程切换会比较少,互相不会产生影响。模块化程度比nginx高一点儿,不过性能说实话不太好说。好处是数据之间不产生耦合,不会出现为了数据共享而加锁的问题。

对于确定性的任务,还是nginx的方案更完整圆融一些。但那是这个方案的好处是可以把IO部分单独提出来做一个库,独立性好一些。缺点的话,这个方案需要多分配内存,每块数据都要缓存,ngnix的方法就没有这个问题,短命的数据可以直接在缓冲区里内部就处理掉了。处理链相对会比较短。

还是要具体任务具体分析,我也只是提个思路,因为具体没有测试过,所以也不好说到底哪个好。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
34 [报告]
发表于 2013-01-21 13:39 |只看该作者
回复 29# starwing83

Overlapped IO不回调啊,这货就是在后台干活,干完了设置一个预先制定的Event,另一头用Wait系列函数等这个Event。
其实就和epoll没两样的说。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
35 [报告]
发表于 2013-01-21 13:52 |只看该作者
本帖最后由 windoze 于 2013-01-21 13:53 编辑

回复 31# starwing83

Leader/Follower本来就要有一个线程/进程池的啊,要不然leader和follower放在哪儿呢……

PS. 问个问题,这个坛子的删除线到底是什么标记?试了好几个没有一个管用的……

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
36 [报告]
发表于 2013-01-21 16:42 |只看该作者
nginx 与 apache做个对比, 你就知道为什么apache比nginx废, 而且为什么apache最后改了一版nginx的架构, 然后自称比nginx还强。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
37 [报告]
发表于 2013-01-21 16:45 |只看该作者
更强还是更废也不好说,至少Apache支持HTTPS CONNECT代理,在这一点上Nginx目前还是废柴

回复 36# linux_c_py_php


   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
38 [报告]
发表于 2013-01-21 17:08 |只看该作者
在架构上不是实现不了, 只是借助upstream做不了的意思吧。

windoze 发表于 2013-01-21 16:45
更强还是更废也不好说,至少Apache支持HTTPS CONNECT代理,在这一点上Nginx目前还是废柴

回复 36# linux ...

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
39 [报告]
发表于 2013-01-21 17:09 |只看该作者
本帖最后由 starwing83 于 2013-01-21 17:09 编辑

回复 35# windoze


    是这样的:[s]这是删除线~[/s]

我的意思是leader/follower除了线程池以外就没有多少属于这个名字自己的干货了= =感觉有点故弄玄虚……

其实一跟网络打交道就觉得里面一些词汇真有点故弄玄虚的味道,什么SOAP啊,什么LAMP啊,什么REST啊,这种framework那种architecture啊,久而久之就审美疲劳了= =所以特别不爱为我自己的某些想法起名字,尽量用以前就有的名儿……

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
40 [报告]
发表于 2013-01-21 17:16 |只看该作者
LF和Reactor两大著名多线程架构, 说白了就是因为Reactor多线程抢夺队列锁嫌慢, 于是LF就胜了, LF就是没有队列了, Leader拿到条件变量后其他follower挂起, leader自己accept后重置条件变量并notify另外一个follower成为leader,说实话没多大差别,各有用途。

starwing83 发表于 2013-01-21 17:09
回复 35# windoze
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP