yield要自己写。我的是结合epoll的:
int yield(int fd,int mode);
mode:读或写。
里边查找线程id,设置epoll,然后,swapcontext()
之后,线程放弃这个context,进行epoll_wait()
epoll收到信号,激活这个线程,进行setcontext返回。
进行后续的读写任务。
一个线程可以伺候很多的fd。
【 在 hgoldfish 的大作中提到: 】
: 单纯的 coroutine 没什么用。建议你看看其它语言,比如 python, rust, go 对 corotuine 的使用。在 coroutine 上面还有很多内容要做。比如事件循环和 coroutine 之间的通讯 lock, event, queue 等等。
: 单纯的 corotuine 有个地方很好用,就是模拟 python 和 javascript 的 yield:
: void range(shared_ptr<int> value, coroutine *main)
: ...................
--
修改:ylh1969 FROM 221.221.52.*
FROM 221.221.52.*