non-blocking IO + IO multiplexing 即 Reactor 模式
程序的基本结构是一个事件循环(event loop),以事件驱动(event-driven)和事件回调的方式实现业务逻辑
伪代码:
while(true)
{
int timeout_ms=max(1000,getNexTimedCallback());
int retval = ::poll(fds,nfds,timeout_ms);
if(retval<0){
错误处理
}
else{
处理到期的timers,回调用户的timer handler,
if (retval > 0){
处理IO事件,回调用户的IO event handler
}
}
}