Chinesejie

Results 22 comments of Chinesejie

用了libgo的 channel来调度dag的实现,如下图: ``` A / \ B1 B2 ``` B1、B2是同一个rpc代码,rpc 之前打印1,之后打印2 结果是1212,也就是没有让出cpu。 哎,心酸。

io的client 是brpc库的, 会不会是brpc的bthread 导致的 ?

高赞,提供了一个好思路,我可以把brpc的代码改成异步回调,然后主线程挂起让出cpu,等回调数据回来了再 搞到channel里面

目前最新代码支持boost1.63不,我看了我们的业务代码,有1.63的强耦合在里面

是的,我没用boost也跑起来了。我看了你的文章,想会不会结合boost性能是不是更好。

好的,感谢。那我就用直接提供的选择。

goStart不阻塞但是也没等协程都运行结束呢。 以前那个RunUntilNoTask函数怎么没了呢? 它两效果不一样吧

我说下我现在的情况吧, 1)只有libgo2.6才支持RunUntilNoTask函数,这个才能让我们老业务代码复用创建过的线程,但是我还想用boost来提升性能,不过boost_1-61_0的版本明显out了,不支持Boost.Coroutine2 2)我使用最新版本的libgo3.x,可惜 没有RunUntilNoTask函数,goStart不满足RunUntilNoTask的需求,stop了就不能重新start。所以还缺一个RunUntilNoTask 还有好的建议吗?

你说得对,老业务代码自己维护了一个线程池。我怎么让调度线程没有任务就不阻塞,而不是等待呢。目前我改了你的代码,在stop的时候解锁start_ lock,在start的时候设置stop变量为false

其实是在libgo里面做到了不阻塞,这样我们的改动成本最低。调用了类似rununtilnotask之后,不阻塞运行到了我的老业务逻辑的线程池里面,拿不到下一个用户任务还是被阻塞了。