网络编程(四)

Linux网络IO模型

同步异步,阻塞和非阻塞

同步和异步
关注的是结果消息的通信机制
同步的意思是调用方需要主动等待结果的返回。
异步的意思是不需要主动等待结果的返回,而是通过状态通知,回调函数等。

阻塞和非阻塞
主要关注的是等待结果返回调用方的状态
阻塞:是指结果返回之前,当前线程被挂起,不做任何事情。
非阻塞:结果返回之前,线程可以做其他事情,不会被挂起。

五种I/O模型

在这里插入图片描述
阻塞I/O模型
在这里插入图片描述
非阻塞I/O模型
在这里插入图片描述
I/O复用模型
在这里插入图片描述
信号驱动I/O
在这里插入图片描述
异步I/O模型
在这里插入图片描述
5个IO模型比较
在这里插入图片描述

NIO

和BIO的主要区别

  • 面向流和面向缓冲
    BIO是面向流的,NIO是面向缓冲的。
  • 阻塞和非阻塞IO
    面向流是阻塞的,一个线程调用read或write的时候,线程被阻塞,直到有一些数据被读取,此期间不能做任何事情。
    而加入buffer则不会保持线程阻塞。
  • 选择器
    NIO的选择器允许一个单独的线程来监视多个输入通道,这种选择器机制,使得一个单独的线程容易管理多个通道。
NIO核心部分

NIO有三个核心部分:buffer缓冲区,Channel管道和Selector选择器
Selector:应用程序将向Selector对象注册需要它关注的Channel以及具体的某一个Channel会对哪些IO事件感兴趣。
Channel:是一个应用程序和操作系统交互事件,传递内容的渠道。ServerSocketChannel:应用服务器程序的监听通道,只有通过这个通道,应用程序才能向操作系统注册支持多路复用IO的端口监听。ScoketChannel:TCP Socket套接字的监听通道,一个Socket套接字对应了一个客户端IP.
NIO在这个博客讲的很好,可以参考
https://blog.csdn.net/weixin_37778801/article/details/86699341

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值