io分发主要采用select实现,伪代码如下:
while(select())
{
    for_each(sockets)
    {
        
if(readble(socket))
        {
            handle_read(socket)
        }
        
else if(writeable(socket))
        {
            
if(responses.empty())
            {
                sleep(x)
                
continue;
            }
            handle_write(responses.pop());
        }
    }
}
由于系统设计时是使用双向請求呼响应模型,socket总是可写的,而并不是每个socket都有相应数据可写,感觉写这一部分相应低效和脏。