在事件驱动的异步编程(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) 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)
现在,有人能告诉我主线程如何以交替的方式运行这三个操作(触发新的网络操作、对现有网络操作进行 epoll,运行已完成 I/O 的回调)吗?(例如,上述 6 个操作的示例序列是什么?)