【 在 ylh1969 的大作中提到: 】
: 还是没有解决异步IO的问题。
: 思考了一下,在C++协程里,co_yield没有出现context,不知道yield跑哪去了。
: 所以没办法调度。
: ...................
具体看一个调度实例:
pthread_t tid=pthread_self();
resource *rs=tpool.pool;
for(ret=0;ret<tpool.num;ret++,rs++) { //从线程池找本线程的ucontext
if(tid == rs->tid) break;
}
if(ret>=tpool.num) return THREAD_ESCAPE;
task=(TCB *)rs->tc.uc_link;
........
ret=do_epoll(task,0,flg);//ucontext put in epoll
ret=swapcontext(&task->uc,&rs->tc);//uc是当前协程的context,tc是母线程的context,这就是yield了。
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*