关于read/write 网络IO、硬盘IO的区别
对于read/write API,在数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待。
因此,对于网络IO,由于我们无法知道网络对面什么时候准备好数据,什么时候发起数据。所以使用read/write的话,可能会一直阻塞在那里,属于阻塞IO。因此需要用epoll来检测对面什么时候准备好数据。
而对于硬盘IO,由于数据一直存储在硬盘中,所以一直处于准备好数据的状态。所以使用read/write的话,会直接返回结果,属于非阻塞IO。此时如果使用epoll的话,会一直返回处于可读的状态。