你22楼,我想了很长时间。最后那一段说明了问题的困境。
目前我能够想到的,就是线程对协程的调度。
还得以事件为调度核心,由线程等待事件。当被一个事件激活时,找到关联的context,那里边有协程,就把任务交给这个协程。用resume。之后就是协程的context。
协程在遇到IO未完成时,就把context挂到事件队列,然后yield。之后成了线程的context,继续等待事件。
所谓调度,就是操作context,c的context是显式的,好操作。C++的,或者rust等等,能拿到这个东西吗?
拿不到怎么调度?你最后一段就是这个问题。
12楼的问题,如果是你,怎么解决?
【 在 hgoldfish 的大作中提到: 】
: await, co_yield 都只涉及到纤程的切换。
: epoll_wait() 是给事件循环纤程用的。这个纤程干的事情和操作系统内核差不多,专门搞调度。
: 但是纤程不一定要被某个控制中心调度。就像我前面说的,两个纤程可以自主地来回切换。完全不需要第三者的参与。这个时候,epoll_wait() 就没有用了。
: ...................
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*