同步与异步

  • Post author:
  • Post category:其他


1.同步行为和异步行为的对立统一是计算机科学的一个基本概念。

2.特别是在 JavaScript 这种单线程事件循环模型中,同步操作与异步操作更是代码所要依赖的核心机制。异步行为是为了优化因计算量大而时间长的操作。

3.如果在等待其他操作完成的同时,即使运行其他指令,系统也能保持稳定,那么这样做就是务实的。

4.重要的是,异步操作并不一定计算量大或要等很长时间。

5.只要你不想为等待某个异步操作而阻塞线程执行,那么任何时候都可以使用。

6.同步行为对应内存中顺序执行的处理器指令。

7.每条指令都会严格按照它们出现的顺序来执行,而每条指令执行后也能立即获得存储在系统本地(如寄存器或系统内存)的信息。

8.这样的执行流程容易分析程序在执行到代码任意位置时的状态(比如变量的值)。

9.同步操作的例子可以是执行一次简单的数学计算

let x = 3;

x = x + 4;

10.在程序执行的每一步,都可以推断出程序的状态。

11.这是因为后面的指令总是在前面的指令完成后才会执行。

12.等到最后一条指定执行完毕,存储在 x 的值就立即可以使用。

13.这两行 JavaScript 代码对应的低级指并不难想象。

14.首先,操作系统会在栈内存上分配一个存储浮点数值的空间,然后针对这个值做一次数学计算,再把计算结果写回之前分配的内存中。

15.所有这些指令都是在单个线程中按顺序执行的。

16.在低级指令的层面,有充足的工具可以确定系统状态。

17.相对地,异步行为类似于系统中断,即当前进程外部的实体可以触发代码执行。

18.异步操作经常是必要的,因为强制进程等待一个长时间的操作通常是不可行的(同步操作则必须要等)。



版权声明:本文为lxy9876原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。