编程领域的同步和异步
- 同步:指一个执行序1在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个执行序将会一直等待下去,直到收到返回信息才继续执行下去;
- 异步:指执行序不需要一直等下去,而是继续执行下面的操作,不管其他执行序的状态。当有消息返回时系统会通知指定执行序进行处理。这样在等待操作完成的过渡事件,系统可以有效利用cpu的资源。
从以上定义可以看出同步和异步之间的区别在于主动权的所属,基本上可以理解为:
- 同步操作主动权在发起者,操作者需要检索指定条件是否满足,如果满足则继续执行,否则继续等待。
- 异步操作主动权切换,操作者发起异步操作之后,主动权归还系统,当系统满足条件之后,系统会继续调用接下来的处理步骤。
从本质上来看,同步的思维更加接近人的惯性思维,更加容易编写成熟稳定的代码,异步代码更符合CPU硬件运行,更加容易编写高效运行代码。
两者看似是一对相互对立的概念,然而在现代编程领域,除了裸写嵌入式程序,一般情况下,同步和异步操作的区别不再明显,更何况有不少编程手段立意用同步的编程方式编写异步任务处理。
同步和异步是两个相依相对的概念,从表现上来看