Please enable Javascript to view the contents

IO

 ·  ☕ 3 分钟
    🏷️

因为有了IO操作才会有阻塞,才会出现同步和异步。

所以不管是同步阻塞,还是异步阻塞都是用来修饰阻塞的;同样的同步非阻塞,异步非阻塞都是用来形容非阻塞的。

1、什么是阻塞?什么是非阻塞?

1
2
3
4
同步:我发起我完成
异步:我发起别人完成
阻塞:完成才返回
非阻塞:未完成就返回
Title: 同步阻塞IO
用户线程->内核: read请求
Note right of 内核: 等待数据到达
Note right of 内核: 数据拷贝
Note left of 用户线程: 线程阻塞
内核-->用户线程: read完成
Title: 同步非阻塞IO
用户线程->内核: read请求1
内核-->用户线程: 立即返回
Note right of 内核: 等待数据到达

用户线程->用户线程: 线程轮询
用户线程->内核: read请求2
内核-->用户线程: 立即返回
用户线程->内核: read请求n
Note right of 内核: 数据拷贝
内核-->用户线程: read完成
Title: 异步阻塞IO
用户线程->用户线程: 
Note left of 用户线程: 监视socket
用户线程->内核: select
Note right of 内核: 等待数据到达
Note left of 用户线程: 线程阻塞
内核-->用户线程: socket可读    
用户线程->内核: read请求
Note right of 内核: 数据拷贝
内核-->用户线程: read完成

什么是数据拷贝,什么是等待数据到达?

Title: 数据拷贝
网卡->内核缓存区
内核缓存区->用户缓存区

2、什么是同步?什么是异步?

同步

同时起步,协调一致

同步指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。

本意是指某人或某事同时进行;同时产生,比如音画同步、动作同步等。

同步(英语:Synchronization),指对在一个系统中所发生的事件(event)之间进行协调,
在时间上出现一致性与统一化的现象。在系统中进行同步,也被称为及时(in time)、同步化的(synchronous、in sync)。

意思是在两个或多个数据库、文件、模块、线程之间用来保持数据内容一致性的机制。

1
2
3
4
5
6
7
8
1、数据库同步的含义就是让两个或多个数据库内容保持一致,或者按需要部分保持一致。

2、文件同步的含义就是让两个或多个文件夹里的文件保持一致,或者按需要部分保持一致。

3、模块同步是在计算机网络中,通信双方必须先建立同步,即双方的输入输出内容要调整到同一个频率。

4、线程同步解决的是在一个程序中多个线程之间的关系的协调,对竞争资源的访问的一种处理方式,避免一个线程长期占用一个资源的目的。

同步Synchronization也称作制约关系,它是指为完成某种任务而建立的两个或多个进程,
这些进程因为要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。
进程间的直接制约关系就是源于它们之间的相互合作关系。

线程同步解决的是在一个程序中多个线程之间的关系的协调,对竞争资源的访问的一种处理方式,其实就是不能并行越过

3、netty的核心组件有哪些?

4、netty为啥这么快?

5、BIO

首先bio是blocking io,由于阻塞所以是同步的