同步异步与阻塞非阻塞

Posted 二十年后20

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同步异步与阻塞非阻塞相关的知识,希望对你有一定的参考价值。

同步阻塞,用户空间的应用程序执行一个系统调用,这意味着应用程序会一直阻塞,直到系统调用完成为止(数据传输完成或者发生错误)。

同步非阻塞,设备以非阻塞形式打开,这意味着 io 操作不会立刻完成,需要应用程序调用多次来等待完成。

 

同步和异步 1)同步:发出一个调用时,在没有得到结果前,该调用就不返回,一旦返回就有结果。2)异步:调用在发出之后就直接返回,所以没有返回结果,换句话说,当一个异步调用发生后,调用者不会立即得到结果,而是在调用发生后,被调用者通过状态通知来通知调用者,或者通过回调函数来处理这个调用。

阻塞和非阻塞 1)阻塞:调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。2)非阻塞:不能立刻得到结果之前,该调用不会阻塞当前线程。

 

BIO:同步并阻塞,一个连接一个线程,适用于链接数量小且固定的架构。      NIO:同步非阻塞:一个请求一个线程,客户端发送的链接请求都会注册到多路复用器

上,多路复用器轮训到链接有 io 请求时才启动一个线程进行处理,适用于链接比较多,比较短。

AIO:异步非阻塞,一个有效请求一个线程,适用于链接数目多且长。

以上是关于同步异步与阻塞非阻塞的主要内容,如果未能解决你的问题,请参考以下文章

同步异步、阻塞非阻塞、Netty

聊聊同步异步阻塞与非阻塞

阻塞非阻塞与同步异步的区别

java nio-理解同步异步,阻塞和非阻塞

聊聊同步异步阻塞与非阻塞

阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一文搞定