阻塞
用户态的线程暂停,等待内核线程等待数据,复制数据完成再返回,属于同步
非阻塞
用户线程一直询问,没有数据直接返回,但是一般用这个非阻塞的read会在while循环里用,所以就是cpu一直被占用,但是没有什么价值,空转,属于同步
多路复用
监听多个channel或者socket,用户线程只需要处理accept或者复制数据,只能配合非阻塞使用,因为如果用阻塞,那selecter的select方法就只能在所有监听的套接字都有事件后才能返回,会一直阻塞,属于同步
异步IO
用户线程注册个回调函数就去忙自己的事,等待数据和复制数据都交给别的线程去做,所以异步一定是多线程,单线程没法异步IO,等复制数据完成,别的线程调用回调函数告诉用户线程
同步与异步
同步就是事情都得我来做,异步就是我告诉别人,别人去做,做完给我结果