加入收藏 | 设为首页 | 会员中心 | 我要投稿 怀化站长网 (https://www.0745zz.cn/)- 语音技术、云资源管理、物联设备、云计算、决策智能!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

学会和人工智能相处

发布时间:2021-01-29 10:47:19 所属栏目:外闻 来源:互联网
导读:我们来解读一下BIO的过程: 应用进程向内核发起 I/O 请求,发起调用的线程 一直阻塞 ,等待内核返回结果。 数据准备完毕,从内核kernel拷贝到用户态内存( 仍旧阻塞 ),然后kernel返回结果,用户进程process结束阻塞,重新运行。 关键钥匙分析: BIO的特点就

我们来解读一下BIO的过程:

  • 应用进程向内核发起 I/O 请求,发起调用的线程 一直阻塞,等待内核返回结果。
  • 数据准备完毕,从内核kernel拷贝到用户态内存(仍旧阻塞),然后kernel返回结果,用户进程process结束阻塞,重新运行。

“关键钥匙”分析:

BIO的特点就是在IO执行的 两个阶段 都被 阻塞 了。

所以,我们日常使用BIO模型的时候,提高性能的方式,就是采用 多线程

在一般的场景中,多线程模型下的BIO是成本较低、收益较高的方式。但是,如果在高并发的场景下,过多的创建线程,会严重占据系统资源,降低系统对外界响应效率。

那是不是可以考虑使用“线程池”或者“连接池”呢?

一定程度上可以。“池化”的目的在于减少创建和销毁线程的频率,让空闲的线程重新承担新的执行任务,维持一个合理的线程数量,可以很好的降低系统开销。

但是,“池化”技术只能一定程度上缓解了频繁调用IO接口带来的资源占用。如果“池”上限100,而我们需要1000的IO,那并不能解决性能问题,这是由于BIO模型本身的限制决定的。

所以,需要非阻塞I/O来尝试解决这个问题。

2.2 同步非阻塞I/O, NIO

BIO的阻塞问题,让我们考虑使用非阻塞的NIO模型。

典型应用:

socket的非阻塞模式
 

资源记录部分的字段含义如下

  • 域名:DNS 请求的域名。
  • 类型:资源记录的类型,与问题部分中的查询类型值是一样的。
  • 类:地址类型、与问题中的查询类值一样的。
  • 生存时间:以秒为单位,表示资源记录的生命周期。
  • 资源数据长度:资源数据的长度。
  • 资源数据:表示按查询段要求返回的相关资源记录的数据。

资源记录部分只有在 DNS 响应包中才会出现。下面我们就来通过响应报文看一下具体的字段示例

(编辑:怀化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读