美文网首页
聊聊异步

聊聊异步

作者: 戈洛林 | 来源:发表于2019-11-14 12:38 被阅读0次

本文已同步发布到我的博客:https://glorin.xyz/2019/11/13/other_about_asynchronized/

什么是异步

这里我们举一个搬砖的栗子,假设有一堆砖头,需要搬到二楼.

一部分人会选择自己搬,于是搬了半天,期间啥事也没干,等搬完了,才能回家洗澡吃饭大游戏,这是同步。

另一部分人,会选择花点钱雇个人帮他搬,自己则去逍遥自在,等人家搬完了,打个电话回来验收一下,跟工头汇报一下就好了。这是异步。

在程序中,对应的故事:

假设我要复制一个文件,可以同步,也可以异步:

  • 同步:开一个InputStream,再开一个OutputStream,然后吭哧吭哧地复制,完了再继续做其他事。
  • 异步:开一个线程,然后在提交一个复制的任务给线程去运行,自己该干啥干啥去,然后等复制完了,回调回来,再去处理复制完后的事情。

为什么要有异步

对于客户端、前端等等,主要还是一个用户体验的问题,假设都是同步地处理任务,那么程序基本上是一会儿就要卡一会儿,下载个文件卡一会儿,读取个文件卡一会儿。因此我们就引入了异步编程,可以在处理耗时任务的时候,程序可以继续做其他事情,比如下载文件的时候还可以继续刷网页。

异步与多线程的关系

异步一定要多线程吗?我认为是的。

因为线程本身是CPU调度的最小单元,假设我们完全就只有一个线程,那执行其他任务时,当前任务必然就不能执行了,也就是同步了。

有些旁友会说,Js和Dart是单线程模型,但是他们也支持异步啊。是的没错,他们确实是单线程模型,也确实是支持异步,关键就在于,他们的异步操作,是由引擎去维护执行的,执行完了再告诉我们,并不是真的所有的操作都在一个线程里面执行。关于这个,具体可以参考: https://dev.to/steelvoltage/if-javascript-is-single-threaded-how-is-it-asynchronous-56gd

异步与回调的关系

先问两个问题:

  1. 回调一定是异步吗
  2. 异步一定要回调吗

第一个问题:No,回调和异步没有必然联系,关键看回调前的操作是同步执行的还是异步执行的,如果没有在其他线程执行,那么只是回调只是相当于执行完任务后,再执行回调方法,本质上一直都是一条线。

第二个问题: No,异步是执行任务的一种方式,只有我们需要结果,才需要回调,否则是不需要的。即使是需要结果,现代语言也提供了例如Future、async、 await等方式去处理结果,并不一定需要回调。

总结

以上是本人对异步的一点想法,水平有限,如有问题,烦请指出,避免误导他人。

参考

相关文章

  • 聊聊异步

    本文已同步发布到我的博客:https://glorin.xyz/2019/11/13/other_about_as...

  • 聊聊 JavaScript 的异步

    JavaScript 中的异步 程序中现在运行的部分和将来运行的部分之间的关系就是异步编程的核心。 ——《你不知道...

  • 异步化,高并发大杀器

    聊聊如何让项目异步化的一些事。 1.同步和异步,阻塞和非阻塞 同步和异步,阻塞和非阻塞, 这个几个词已经是老生常谈...

  • 聊聊同步和异步(1)

    同步:一个任务A的完成需要依赖另一个任务B,只有任务B完成之后,任务A才算是完成任务。异步:一个任务A需要依赖任务...

  • 聊聊同步和异步(2)

    传递回调函数 1、使用Javascript编写 Servlet() 作为用户调用的方法,其通知业务组件servic...

  • JAVA-IO(一)

    JAVA-IO(一) sschrodinger 2019/05/21 引用 聊聊同步、异步、阻塞与非阻塞 - 猿码...

  • 聊聊Linux 五种IO模型【转载】

    上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过...

  • 聊聊Linux 五种IO模型

    上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过...

  • 从带娃聊聊同步异步

    小朋友刚开始说话是很棒的经历,会有很多好玩的段子,当然也有些困扰,例如很经常有的情况是:大人和小朋友说了很多次,小...

  • js的事件循环和异步

    聊聊js的异步 首先,聊异步,得先弄清楚为什么不用同步,用同步会有什么问题,我们先明确一点,js的执行是单线程的,...

网友评论

      本文标题:聊聊异步

      本文链接:https://www.haomeiwen.com/subject/vvcrictx.html