阻塞/非阻塞,同步/异步IO

理解的概念:

阻塞/非阻塞是一种线程的状态;同步/异步是一种方法调用的实现方式。

五种线程模型

线程模型中主要有两个对象:用户进程和内核,内核中的步骤有两步,一是socket 数据准备,二是将准备好的数据由内核态复制到用户态,可供用户线程使用。
用户进程通过系统调用,获取socket 流信息。五种模型中,只有异步模型是全程不阻塞的,其他模型在准备好的数据从内核态往用户态复制的时候都是阻塞的。

1.阻塞

在这里插入图片描述

2.非阻塞

在这里插入图片描述
非阻塞是使用用户进程轮询,而I/O复用中的select是内核轮询的。

3.I/O复用

I/O 复用是进程需要预先告知内核,内核一旦发现进城指定的一个或多个I/O条件就绪,它就通知进城的一种能力。
在这里插入图片描述

4.信号驱动

在这里插入图片描述

5.异步IO

在这里插入图片描述

五种模型如上图,阻塞IO 是默认IO,响应最快,但是CPU利用率不高。
由此引出来一个问题,内核线程会是阻塞状态,但是用户线程呢?还是runable?是会影响其他线程调度么?总觉得这里有点怪怪的还没有弄通

用户线程此处说阻塞,但是线程状态是Running,
在这里插入图片描述
对应的内核线程状态是什么,使用mac 还没有查到,有点忧桑呢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值