【 在 eematlab 的大作中提到: 】
: 网络异步编程我用epoll notifyevent实现过, 就是事件加回调。我看不清楚的是c 20里coroutine规范和实现细节, 用一个个没讲清楚的名词来解释另一个名词
: 发自「今日水木 on PCT-AL10」
可以使用coroutine把异步过程包装成同步过程。把显式的回调包装成隐式的。
我是用C的,没有用C++的。所有细节都是自己做的,所以知道这个东西的具体过程。甭管是什么类,内部应该是一样的过程。
AIO_read(fd,buf,num,timeout);
像同步调用一样,返回时,已经收好。
但是中途如果没有收完数据,就会调用yield to epoll.线程逃跑干别的去了。在逃跑前设置好epoll事件。epoll事件出现了,就会有一个线程resume回来继续接受,直到全部收完返回。调用者以为就是同步完成的,没有发现中途线程逃跑给别人干活去了。
--
修改:ylh1969 FROM 221.221.52.*
FROM 221.221.52.*