- 主题:光有协程不够吧?
是的。。所以我才说 c++20 的协程大家先别用。这是给第三方库的作者准备的。
哪位有兴趣的话现在就动手搞一个 c++20 协程库。刚好等 c++23 出来的时候成熟,说不定能扬名立万。。
【 在 GoGoRoger (GoGoRoger) 的大作中提到: 】
: 还得有调度器,并且配合非阻塞的api调用,我看腾讯就重载了io和同步的函数。
: 想一想就头大。
: 发自「今日水木 on Mi Note 3」
: ...................
--
修改:hgoldfish FROM 125.78.66.*
FROM 125.78.66.*
那东东只是名气大。问题很多。
【 在 GoGoRoger (GoGoRoger) 的大作中提到: 】
: 第三方库。。。。那还不如直接用腾讯的libco咧,多此一举。
: 发自「今日水木 on Mi Note 3」
--
FROM 125.78.66.*
微信/tx也不是什么金字招牌吧。这么相信他们啊。
【 在 GoGoRoger (GoGoRoger) 的大作中提到: 】
: 哦,只是简单看了看,觉着不错,没机会使用。能在微信几万台机器上跑,应该问题不大吧?
: 发自「今日水木 on Mi Note 3」
--
FROM 125.78.66.*
你好歹看一下它的主页。它的源文件没几个,看一下就明白了。
libco 只支持 x86/amd64 架构,不支持 windows. 这限制了它的应用场景只能在 linux 服务器。而且只 hook 了一些 io 函数,你在程序里面写个 sleep() 就完完。
【 在 GoGoRoger (GoGoRoger) 的大作中提到: 】
: 在我这种弱鸡看来还是很厉害的。。。而且比较人家已经上线了嘛,事实胜于雄辩。你说的问题具体是?
: 发自「今日水木 on Mi Note 3」
--
FROM 125.78.66.*
那你去踩踩坑就知道了。它那套太简陋了,必然天坑无数。
libco 太早了太原始了,你如果感兴趣的话,应该去看看魅族家的 libgo.
【 在 GoGoRoger (GoGoRoger) 的大作中提到: 】
: 哦哦,我还以为什么呐,这些对我不是什么大问题。
: 发自「今日水木 on Mi Note 3」
--
修改:hgoldfish FROM 125.78.66.*
FROM 125.78.66.*
c 语言实现 coroutine 最简单了。两三个函数就搞定了。linux 都自带了 swapcontext
【 在 warboss (warboss) 的大作中提到: 】
: qemu代码里面多年前自己就实现了完整的coroutine,目的就是为了虚拟机镜像读写。
--
FROM 112.47.122.*
单线程协程可以搭配多线程。
每个单线程协程都自己玩自己的。
不同线程之间使用专门的工具进行通信。
几种协程的方式,目前各种语言都有实践。目前还处在百花齐放的阶段。
【 在 ylh0315 的大作中提到: 】
: 单线程协程,不好玩。我的那些例子都是多线程协程的,代码里能看出来。
: 28楼程序里,开始就是用pthread_self找线程池里的context。
: 后边也有防止线程冲突的代码。
: ...................
--
FROM 120.33.8.*
你说的是对的啊。用协程的就不要用 thread local 了。
我今天突然发现协程方案的一个好处是在协程里面申请内存可以更频繁地使用栈内存。也算一种加速。
【 在 allegro 的大作中提到: 】
: 感觉多线程协程thread_local基本废了。
: 除非语言实现支持,不同线程驱动同一协程,在切换时,把thread_local的寻址也切换一下。
: Correct me if I am wrong.
: ...................
--
FROM 110.81.0.*
负载均衡算法弄好就行了。很简单的,看谁不忙才把任务给它。
nginx 做这个算法不容易,因为不知道各个进程的忙碌程度。但协程算法很容易,只要在事件循环里面计算一下,其它线程马上可以取到这个值。
【 在 ylh0315 的大作中提到: 】
: 负载均衡很不充分哦!我这个几乎可以把所有的核用到100%。
: 一个指标可以看到负载均衡的效果:
: 最大响应时间与平均响应时间之比,越小越好。
: ...................
--
FROM 183.253.143.*
你没看明白吧。thread_local 切一下就是 BUG 了。
【 在 ylh0315 的大作中提到: 】
: 切换有啥关系,换个核呗。反正IO会等待很长时间,不在乎这一点点。之前的核可以及时为其他任务服务也比在这里死等强。
: 我的设计是尽量不切换。IO都是先干一把,干不完再yield。
--
FROM 183.253.143.*