IO管理

ECMA的标准中有2种语言:C#、JS

1、IO?

IO就是Input/Output

2、什么是异步

异步,其实就是不阻塞当前线程,可以让代码继续执行下去的操作就是异步。

 

X:对象公用的非阻塞式

 

阻塞与非阻塞、异步与非异步、并行与并发

(1)什么是阻塞与非阻塞?

所谓的阻塞与非阻塞是来描述行为的,也就是没有行为特征,是无法判定一个函数是阻塞的还是非阻塞的。

阻塞的含义:在该动作/函数没有返回之前,不能进入下一行代码,则为阻塞。但是,入宫你的阻塞是程序级别的或进程级别的,那么判断阻塞的标准将会被您的这个背景知识所扩大。扩大为:某一个线程,在某函数没有返回之前,不能进行下一步,则该函数为阻塞,但是该阻塞,其实应当是线程级别阻塞,而非完全阻塞函数。

 

(2)什么又是异步与非异步?

讲究一个函数是否是异步,要看它的行为,而不是它的代码。

并行必须是异步的,但异步并不以第那个是并行。

 

(3)什么又是并行与并发呢?

 

3、异步IO?

FIFO:linux下的一个概念。

epoll、ShareMemory、NamePipeline

windows下有一个最尴尬的情况,TCP的口子,有闭合期(close_wait).zuo jmeter会遇到。

异步IO其实还是来描述IO的。首先要确定当前的操作是不是IO。

万物相对论,没有参照物咱们就没有形容词。异步时形容IO的。

那么,就得设计到同步。

假定:你有一个操作,此时需要读取某个东西,这时候跟CPU已经没有关系了,如果你是依赖于让CPU也牵扯进来,让它等着,完事以后再说,这时候你的程序就处于无响应状态(CPU不可能等你的程序的,它只会等着你唤醒,所以也就是同步IO阻死了至少一个线程)。

这时候,如果你让这个操作相对于当前的线程可以不那么紧急,告诉CPU我知识这个函数到了这里可以跳出了,别的内容你该干啥还是得干。

这时候就异步了。

那么IO呢,就是异步了一下IO操作而已。

 

4、优点是什么?

在.NET中,说的异步IO就是代指标准的异步IO且能够使用线程池中的IO线程。

第一个优点:不占用资源;

然而,学习过计算机原理的都知道,CPU跟这些IO设备其实在某些时刻时完全可以独立开的。例如内存的DMA(Direct Memory Access)等技术。所以先问一个问题。处理IO的时候会一直占用CPU吗?

5、缺点是什么?

只要异步,就会存在同步的问题。

如果你考虑同步就会存在脏的问题。

如果你不在乎脏,就会有错的问题。

如果上面两个如果你不担心,那么无所谓,如果你担心,你会引申出来一堆的东西,引申什么呢?

 

6、自己写代码时,这知识有什么用?

 

7、影响和结论

夯实基础学完后,就应该能自己写出来符合逻辑的、合乎正常水平的代码了。接下来就需要组装这些内容了,如果不组装,可能一辈子也不会有啥用。

原文地址:https://www.cnblogs.com/lanyuejiagou/p/12598753.html