阻塞、非阻塞、同步、异步的理解
参考:https://juejin.im/entry/58ae4636b123db0052b1caf8 (文中部分理解有误)
阻塞调用是指待返回数据就绪之前,调用者会进入阻塞状态等待。只有在得到结果之后才会返回。
非阻塞调用是指待返回数据就绪之前,该函数不会阻塞当前线程,而会立刻返回。
同步:在发出一个同步调用时,在没有得到结果之前,该调用就不返回。
异步:在发出一个异步调用后,调用者不会立刻得到结果,该调用就返回了。
同步阻塞调用:得不到结果不返回,线程进入阻塞态等待。
同步非阻塞调用:得不到结果不返回,线程不阻塞一直在CPU运行。
异步阻塞调用:该调用返回,主线程阻塞。(所以应该是没有意义的)
异步非阻塞调用:该调用返回,主线程不阻塞(假设是在主线程调用的吧)
参考:
Linux IO模式及 select、poll、epoll详解
https://segmentfault.com/a/1190000003063859
怎样理解阻塞非阻塞与同步异步的区别?