免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: windoze

[C++] 开源项目Fiberized.IO召唤测试 [复制链接]

论坛徽章:
0
发表于 2015-05-28 18:43 |显示全部楼层
lol偶像牛牛的

论坛徽章:
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
发表于 2015-08-30 02:23 |显示全部楼层
纯靠看RFC搞定了WebSocket,一堆的坑……

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2015-08-30 19:20 |显示全部楼层
本帖最后由 yulihua49 于 2015-08-30 19:29 编辑
windoze 发表于 2015-08-30 02:23
纯靠看RFC搞定了WebSocket,一堆的坑……

这个协程接口还可以吗?支持OSX和X86_64的。
https://swtch.com/libtask/asm.S

swapcontext和makecontext在这:
https://swtch.com/libtask/context.c

OSX已经取消了这个,所以通过这个库来恢复。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2015-10-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-01 06:20:00程序设计版块每日发帖之星
日期:2015-11-02 06:20:00每日论坛发贴之星
日期:2015-11-02 06:20:00程序设计版块每日发帖之星
日期:2015-11-03 06:20:00程序设计版块每日发帖之星
日期:2015-11-04 06:20:00程序设计版块每日发帖之星
日期:2015-11-06 06:20:00数据库技术版块每周发帖之星
日期:2015-12-02 15:02:47数据库技术版块每日发帖之星
日期:2015-12-08 06:20:00
发表于 2015-10-26 17:46 |显示全部楼层
不错, 楼主的Boost功力很强,  一直很佩服, 顶上来.

论坛徽章:
0
发表于 2015-10-27 17:17 |显示全部楼层
好复杂 用起来是危险的

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2017-07-23 08:41 |显示全部楼层
pandaiam 发表于 2014-03-21 16:55
厉害啊,
看不懂的路过。

现在玩这个的太少啦!
我找到libtask的代码啦,ucontext,如果系统不提供,可以用自己的代码啦。似乎里边缺乏arm的代码。
你这个是单线程协程还是多线程的?libtask是单线程的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2017-07-24 09:47 |显示全部楼层
我的回复还在隐身中。问楼主你这个是多线程协程吗?

论坛徽章:
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
发表于 2017-07-24 09:50 |显示全部楼层
回复 46# yulihua49

是多线程啊,我记得你不是知道的吗?

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2017-07-24 09:51 |显示全部楼层
本帖最后由 yulihua49 于 2017-07-24 10:02 编辑
windoze 发表于 2017-07-24 09:50
回复 46# yulihua49

是多线程啊,我记得你不是知道的吗?

忘了。多谢。
我的框架是PPC,TPC,Tpool多种模式,只有Tpool模式具有协程。所以应用插件应该透明的支持各种框架。但是这个有困难,PPC可以不用锁,TPC用线程锁,Tpool需要用协程锁。
就如框架底层的RecvNet(),SendNet(),它们根本不知道上层是什么模式,但是要对所有模式兼容。被写成了同步/异步两用的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2017-07-24 10:14 |显示全部楼层
本帖最后由 yulihua49 于 2017-07-24 10:21 编辑
windoze 发表于 2014-03-24 11:38
回复 10# linux_c_py_php

Lua那个,我记得你不是在讨论HSHA和LF的区别么?不应该是单线程的啊?

“关于超时,我目前的解决方案是:
1. 每次读写操作都先设置一个timer
2. 读写回调中cancel timer,timer回调中cancel读写操作,但是这个cancel不一定有效,尤其是当你在后面还有一个排队层的时候,有可能回调已经进入了队列,此时就无法撤消了。
3. 读写回调中检查timer回调的结果,timer回调中也要检查读写回调的结果,只有两个回调都被触发之后才算是操作完成。
4. 由于排队层后面是一个线程池,连个回调可能被分派到不同的线程,所以还有一些race condition,目前我是犯懒用ASIO里面的strand解决这个问题, 否则还要做很多额外的工作。
目前这种两个回调的方案会对所有的操作带来额外的开销,所以想看看有没有什么办法。”
----------------------------------------------------------------
这个我用别的办法解决,目前看效果还不错。
只使用一个定时器,监控所有context。每个context都含有若干超时参数,包括时间戳,超时值,状态,超时回调函数。目前是两个。
应用在适当时机设置超时参数,定时器发现超时的,根据其状态从相应队列里删除出来,调用回调函数解脱之。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP