异步编程到底在说啥?

来源:面包芯语 时间:2023-07-28 12:17:35

我们以函数调用为例,假设有这样的代码:

代码非常简单,B函数读取一个文件,文件里保存的是一行行数据,然后加和,A函数中的某个位置调用B函数。


(资料图)

此时,我们说这是同步调用,因为A函数后续代码必须等待B函数处理完文件才能继续执行。

随着业务不断发展,B函数处理的文件越来越庞大,此时处理一次文件耗时2小时,假设A函数后还有一行重要的代码:

这就意味着,调用B函数后需要等待2个小时才能执行到something_important这行代码,而something_important函数对时间要求非常苛刻,该怎样改进呢?

其实很简单,我们可以在B函数内部创建一个线程,在线程中处理文件:

这样B函数被调用后创建完线程即可立即返回,紧接着开始执行something_important这行代码,CPU在执行something_important这行代码时可能文件还没有开始处理,这样函数A不再依赖于文件处理,这时我们说函数B函数就是异步调用的,函数A异步于文件处理。

如果是在单核系统下,CPU会不断在处理文件线程和A函数线程间切换,看上去这两个线程就好像在同时运行,但如果是在多核系统下,这两个线程可以真正的并行起来。

在编程语境下,异步往往和线程进程等相关。

最后举个例子,同步就好比你排队去自助售票机取电影票,你必须排队等待前一个人取完电影票才能到你,你不能在前一个取票的过程中取自己的票,这时我们说取电影票时你和前一个人是同步的。

而异步就好比去吃大餐,你在座位上看菜单点菜,其它人也可以点菜,你不需要等待其它人吃完饭才能下单,这时我们说你点菜和其它人吃饭是异步的。

X 关闭

推荐

异步编程到底在说啥?异步编程到底在说啥? 新东方涨超6%创2年新高,季度收入超预期+官宣“杀入”文旅市场新东方涨超6%创2年新高,季度收入超预期+官宣“杀入”文旅市场

  • 全球首制700标箱纯电动 万吨级江海直达 国内最大吨位电动船扬州出坞

    全球首制700标箱纯电动 万吨级江海直达 国内最大吨位电动船扬州出坞

  • 高起点打造皖北高端绿色食品产业集群

    高起点打造皖北高端绿色食品产业集群

  • 2023大运会开幕式会在央视频道全程直播吗?

    2023大运会开幕式会在央视频道全程直播吗?

  • 三根绳子编手链的方法慢教程_三根绳子编手链的方法

    三根绳子编手链的方法慢教程_三根绳子编手链的方法

  • 平安普惠聚焦小微赋能、实现稳步增长,未来将专注提升服务质效

    平安普惠聚焦小微赋能、实现稳步增长,未来将专注提升服务质效