这一套要是真的那么好用早就流行起来了。但事实上是没有。
ucontext 这几个函数是不跨平台的,在 windows 下不能用也就算了,连 android 同样是 linux 内核也用不了。
而且因为它申请的 mmap(MAP_GROWDOWN | MAP_STACK) 内存。一次申请 8MB 的话,在以前 32 位机器里,只有 2GB 的内存空间经常不够用。
c++20 能够支持 stackless coroutine 还是更好一些。
现在的问题是 c++20 只提供最基本的协程来回切换的功能,但具体的协程库还需要更多东西,比如事件循环、同步机制等等全都没有,要么程序员自己折腾,要么等标准库、第三方库成熟。而且 co_await 没法处理 operator+() 这特殊函数,没法穿透迭代器。只能说受限于 c++ 的旧语法,协程在 c++20 下永远也没法达到完美,只能凑合凑合。
【 在 ylh1969 的大作中提到: 】
: ucontext不是回调啊,就是coroutine呀!
: 一共4个函数,每个功能都极其简单,非常好理解。
: 由于资源是你自己管理的,这部分代码会有一些。有啥问题自己清楚。
: ...................
--
修改:hgoldfish FROM 110.84.121.*
FROM 110.84.121.*