在事件驱动的异步编程(nodejs<- libuv)中,我们有主线程执行所有操作。
这里每个操作都有 i) 主操作和 ii) 回调操作。
这意味着主线程正在执行所有主要操作和回调操作。
例如,
int main() {
while(1) {
asyncall(op1, callback1);
asynccall(op2, callback2);
asynccall(op3, callback3);
asyncall(op4, callback1);
asynccall(op5, callback2);
asynccall(op6, callback3);
}
}
假设所有 op-i 都是网络 i/o,因此它们将由主线程(使用轮询)执行,而不是使用一些工作线程池。
现在,主线程必须做:
i) Fire new network operation op-i
ii) Check if(epoll for Linux) IO op-j completed :
a) If completed then run callback-j
Else:
b) jump to (ii)
现在,有人可以告诉主线程如何运行这些
三个操作(触发新的 n/w 操作,epoll 用于现有的 n/w 操作,运行回调以完成 I/O)
在 INTERLEAVED FASHION 中?(例如上述 6 次操作的示例序列)