阻塞、非阻塞、同步、异步的理解

参考:https://juejin.im/entry/58ae4636b123db0052b1caf8 (文中部分理解有误)

阻塞调用是指待返回数据就绪之前,调用者会进入阻塞状态等待。只有在得到结果之后才会返回。

非阻塞调用是指待返回数据就绪之前,该函数不会阻塞当前线程,而会立刻返回。

同步:在发出一个同步调用时,在没有得到结果之前,该调用就不返回。

异步:在发出一个异步调用后,调用者不会立刻得到结果,该调用就返回了。

同步阻塞调用:得不到结果不返回,线程进入阻塞态等待。

同步非阻塞调用:得不到结果不返回,线程不阻塞一直在CPU运行。

异步阻塞调用:该调用返回,主线程阻塞。(所以应该是没有意义的)

异步非阻塞调用:该调用返回,主线程不阻塞(假设是在主线程调用的吧)

参考:

Linux IO模式及 select、poll、epoll详解

https://segmentfault.com/a/1190000003063859

原文地址:https://www.cnblogs.com/yaoyaohust/p/10617406.html