c10k指的是服务器有10000个socket连接时,如何高效处理io事件。
需要考虑两方面:如何和操作系统配合感知io事件;如何分配线程,进程实现并发处理
下图展示了解决方法的演化过程:
主从reactor示例:
阻塞IO与非阻塞IO:
相对于调用者而言,比如read操作时,非阻塞表示若不能读到数据,就立即返回,先去做别的事情,过阵时间再次询问;阻塞表示一直等待直到可以读到数据,此时应用程序不能做别的事情。
异步IO与同步IO:
同步,调用者感知事件后,调用write和read函数完成读写,但异步,调用者发起请求,读写操作交给内核来做,调用者来获取结果。