关于异步编程那些你不知道的事

虽然我们生活在一个异步的世界里,但对于多数编程初学者来说,异步还是很陌生。学习一门编程语言,通常都是从同步流程开始的,即顺序、分支和循环。而异步流程是什么呢——开始一个异步调用,然后……就没有然后了。异步程序跑哪去了?

异步程序会以某种异步的形式在运行着,比如多线程、异步IO等,直到处理完成。那如果需要处理结果怎么办?给一个程序入口,让它处理完当前过程之后,把处理结果送到这个入口,然后执行另一段程序——俗称回调。回调一般使用 callback 这个名称,不过有时候我更喜欢使用 next,因为它代表着下一个处理步骤。

同步和异步的概念

现在我们接触到了一些概念,比如同步和异步,它们是什么?

这两个概念并不来源于编程语言,而是来源于低层指令,甚至更低层的——电路。它们是基于时序的两个概念,其中,“步”是指步调,所以同步表示相同的步调,而异步表示不同的步调。当然这两个概念提升到程序这个级别的时候,精确的意思与时钟无关,但所表示的意义仍然未变。

同步

举个生活中的例子来说明这个问题——排除买票。售票厅开了一个窗口,有一队人在排队依次买票。这个队伍中,前面一个人往前走了一步,后面的人才能往前走一步;前面的人在等待,后面的人就一定在等待。那么在理想的情况下,所有人可以同时向前迈步。OK,大家步伐一致,称为同步。

这里把售票窗口看作是处理器,每个人看作是等待执行的指令,买票这个动作就是在执行指令。它的特点是按步就班,如果一个人买票时间过长(指令执行时间过长),就会造成阻塞。

转载自51CTO博客,更多内容请:点我跳转

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,829评论 25 708
  • 第一章 2013年11月11号那天,宿舍的同志们集体自杀般的齐齐上网疯狂购物外加调戏刚来不久的大一纯情小男生。而我...
    莫阿池阅读 166评论 0 0
  • 想要朝阳,却给了我一片黄昏。
    胡萝卜小小阅读 340评论 0 0
  • 他是那些年我做作业时听着的歌 是小小铅笔盒里贴着的贴纸 是一本本买回家的杂志 还有小心翼翼剪下来的文字和图片 1、...
    Joean乔安阅读 712评论 1 1
  • importance? millions and billions of years, what is true ...
    qynglang阅读 143评论 0 0