- 主题:终于想明白协程了。
为啥最近这么多人搞协程?
ASIO文档有几个用协程的例子挺不错的。
【 在 speedboy2998 的大作中提到: 】
: 不得不说,人的思维定式还是很害人。
: 我当年毕业的时候,多线程还不普及,我狠下功夫研究了IOCP以及EPOLL,当时的EPOLL都还没有正式进入LINUX内核,需要自己编译内核来支持。整个公司的一套通讯平台底层基础库就是我封装的,对业务层提供统一接口,底层分别支持IOCP和EPOLL(和ASIO一个思想),我当时对多线程和SOCKET了解得特别透彻,也非常不明白为啥很多人不理解多线程。
: 现在遇到协程,我发现我也死活理解不了这玩意儿,不由得哀叹自己老了。但是突然有一天一下子明白了,协程和线程核心区别其实就是:线程是内核创建并调度的,内核根据算法来pause/resume某个线程,线程中的代码随时都可能被内核pause,过一会儿又回来从之前pause的地方接着执行,programmer 不用管什么时候代码被暂停执行,什么时候被恢复执行。
: ...................
--
FROM 175.42.42.*
是挺好用,我是用ASIO+协程,可惜还用不了C++20的协程语法。
C++20标准通过了吗?
【 在 hgoldfish 的大作中提到: 】
: 因为 c++20 加了协程吧。。
: 不过这东东用了真是会上瘾。
: 我用协程 + Qt 写网络程序的客户端。比以前方便清晰了很多。
: ...................
--
FROM 175.42.42.*
Rust里的协程也是这样的。
【 在 allegro 的大作中提到: 】
: 这个C++20标准下的协程恢复线程不确定。
: 如果协程上下文都refer了某个tls,那么await前后看到的tls实际上可能是不同的变量。
: 虽然名字相同,代码就隔了一个await,但执行起来千差万别,这对用户来说是真·天坑。
: ...................
--
FROM 175.42.42.*