将muduo协程化之后发现吞吐量提升了接近一倍 #620
Replies: 3 comments 2 replies
-
我对协程的看法: https://groups.google.com/g/muduo-library/c/OIFG8uF6-Bg/m/I2uO-zcCAgAJ 长话短说:首先,我认为 Go 的并发模型非常好用,写起来比基于事件回调的风格思路要顺畅许多;但是,我目前认为在 C/C++ 里搞用纯户态的 coroutine 没有前途。 coroutine 的本质是对 OS thread 的复用,好处是比 thread 更轻量(10 倍以上),memory locality 也更好,一个程序可以有几百上千的线程 vs. 几万的 coroutine。 根据我这几年所学,我认为正确的做法是让内核做上下文切换,但同时可以把调度的任务放到用户态,这样两方面的好处都占住了。 具体说来,如果 Linux 内核接受了 Google 的 switchto() 系统调用,那么 C/C++ 服务端编程就可以采用 Go 一样的编程模型,大家都轻松很多。 ref. ps. Google 内部用 switchto() 已经很多年了。这也是我对 C++20 里的协程不感兴趣的原因。 |
Beta Was this translation helpful? Give feedback.
-
reactor 就没法实现协程。 协程解决的是什么问题?协程解决的是回调地狱的问题。 至于所谓的协程性能高。其实并不是协程性能高。而是 proactor 模型带来的性能高。协程是用来解决 proactor 模型容易有回调地狱这个缺陷的。 哪怕 linux 真的搞了个 switchto, muduo 也是没法实现协程的 |
Beta Was this translation helpful? Give feedback.
-
测试标准是什么?,经过了上线的考验吗?
…---原始邮件---
发件人: ***@***.***>
发送时间: 2024年12月5日(周四) 下午3:30
收件人: ***@***.***>;
抄送: ***@***.***>;
主题: Re: [chenshuo/muduo] 将muduo协程化之后发现吞吐量提升了接近一倍 (Discussion #620)
reactor 就没法实现协程。
协程解决的是什么问题?协程解决的是回调地狱的问题。
reactor都没有回调地狱问题,何来协程呢?
至于所谓的协程性能高。其实并不是协程性能高。而是 proactor 模型带来的性能高。协程是用来解决 proactor 模型容易有回调地狱这个缺陷的。
既然 muduo 是 reactor 模型,那么就没有回调地狱。没有回调地狱,就没有使用协程的必要。
哪怕 linux 真的搞了个 switchto, muduo 也是没法实现协程的
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
陈硕大大,我将muduo按照有栈非对称协程化之后,发现discard程序吞吐量提高了接近一倍,协程使用的boost-context,epoll使用的边沿触发,项目地址 https://github.com/zhngs/baize ,希望能听一听您的见解。ps:感谢您的muduo库和书籍以及网络编程视频,我学到了很多东西
Beta Was this translation helpful? Give feedback.
All reactions