BIO NIO AIO

BIO NIO AIO

BIO - blocking IO

传统IO模型,同步阻塞,所有的accept read write 都会阻塞,不管是客户端还是服务器端。
普通的socket编程就是这种。当服务器端accept时阻塞,当read时也会阻塞。
通过使用多线程可以实现对多个客户端的链接,即主线程中accept,当有新的连接建立后,使用线程处理read/write.

NIO - Non-blocking IO

采用channel或者buffer 与 selector的方式,实现同步非阻塞。

步调(同步、异步)和阻塞(阻塞、非阻塞)

阻塞 非阻塞
同步 执行任务,并等待返回结果 执行任务,轮询返回结果
异步 延迟执行任务,一旦开始任务就一直等待返回结果 执行任务,并结果准备好后,通过回调方式处理结果

同步阻塞

什么叫同步非阻塞:使用编程的方式去描述就是:

  • 把try放在while 循环中,直到try成功。

比如采用channel或者buffer的方式实现同步非阻塞,可能就是
不停地去检查channel或者buffer中是否已经有数据。

  • 如果没有不停的检索,
  • 如果有了则继续后续的工作。

异步阻塞

"在需要某资源时不马上发起请求,而安排一个以后的时间再发起请求。当到了那时发出请求时,将暂停本线程之后的程序,直至获得所需的资源。在获取资源之后,使用共享信号量、异步回调等方式将结果异步反馈。"
https://blog.csdn.net/wangpaiblog/article/details/117236684

IoC

IoC: Inversion of Control 依赖倒置,也称为控制反转
在很多系统设计中常被用到,用来实现模块与模块,完成实现对象和设计框架之间的解耦。
IoC也让函数回调或者插入函数变的容易。

posted @ 2024-06-04 10:35  zongzw  阅读(10)  评论(0)    收藏  举报