hukui161 发表于 2015-05-28 18:43

:lol:lol偶像牛牛的

windoze 发表于 2015-08-30 02:23

纯靠看RFC搞定了WebSocket,一堆的坑……

yulihua49 发表于 2015-08-30 19:20

本帖最后由 yulihua49 于 2015-08-30 19:29 编辑

windoze 发表于 2015-08-30 02:23 static/image/common/back.gif
纯靠看RFC搞定了WebSocket,一堆的坑……
这个协程接口还可以吗?支持OSX和X86_64的。
https://swtch.com/libtask/asm.S

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

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

wlmqgzm 发表于 2015-10-26 17:46

不错, 楼主的Boost功力很强,一直很佩服, 顶上来.

huxk 发表于 2015-10-27 17:17

好复杂 用起来是危险的

yulihua49 发表于 2017-07-23 08:41

pandaiam 发表于 2014-03-21 16:55
厉害啊,
看不懂的路过。

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

yulihua49 发表于 2017-07-24 09:47

我的回复还在隐身中。问楼主你这个是多线程协程吗?

windoze 发表于 2017-07-24 09:50

回复 46# yulihua49

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

yulihua49 发表于 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(),它们根本不知道上层是什么模式,但是要对所有模式兼容。被写成了同步/异步两用的。

yulihua49 发表于 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都含有若干超时参数,包括时间戳,超时值,状态,超时回调函数。目前是两个。
应用在适当时机设置超时参数,定时器发现超时的,根据其状态从相应队列里删除出来,调用回调函数解脱之。


页: 1 2 3 4 [5]
查看完整版本: 开源项目Fiberized.IO召唤测试