这个是 go, java 这些语言的做法。
我感觉你的实现是有 BUG 的。我记得你会迁移协程的内存,而不是使用我说的 mmap(MAP_STACK). 这样会导致引用到栈的指针出现问题。这是 c/c++ 在实现协程(纤程)时特有的问题。
go, java 不需要使用 mmap(MAP_STACK) 的原因是因为他们其实并不使用栈,底层实现是 stackless 是一种编译期的变换,而是使用的函数调用帧,这东东其实是存堆里的。
【 在 ylh1969 的大作中提到: 】
: 在一个应用模块里,使用了IO,就可能在IO后换线程。
: 如果没有IO,就可以一直运行下去,不受打扰,没有调度开销。
--
修改:hgoldfish FROM 27.152.128.*
FROM 27.152.128.*