我记得接触这些词语是在学操作系统的时候。
当时记得最清楚的就是,在讲到通信时,同步才是异步,异步才是同步。
同步:发送方发送请求后,需要等待接收响应,否则将一直等待
异步:发送方发送请求后,不需要等待响应,可以继续发送下一个请求,或者主动挂起线程并释放CPU
阻塞:IO 调用会一直阻塞,直至结果返回才能继续执行
非阻塞:IO 调用会立即返回,不需要等待结果,并可以执行下一个 IO 调用
同步/异步(描述网络通信模式,适用于请求-响应模型)
阻塞/非阻塞(描述进程的函数调用方式)
同步和异步IO的概念:
同步是用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行
异步是用户线程发起I/O请求后仍需要继续执行,当内核I/O操作完成后会通知用户线程,或者调用用户线程注册的回调函数
阻塞和非阻塞IO的概念:
阻塞是指I/O操作需要彻底完成后才能返回用户空间
非阻塞是指I/O操作被调用后立即返回一个状态值,无需等I/O操作彻底完成
如何理解呢?
那么除了需要分清楚这四个词语的意思外,这四个词语两两搭配还要理解下:
同步阻塞:比如洗衣机洗衣服的时候,需要等待洗衣机,这时是同步,人什么事都不做,就只是在等洗衣机洗完衣服,就是阻塞。
同步非阻塞:比如洗衣机洗衣服的时候,需要等待洗衣机,这时是同步,人可以在洗衣机洗衣服的这段时间做其他事,就是非阻塞。</