异步编程到底在说啥?
- 面包芯语
- 2023-07-28 12:39:16
我们以函数调用为例,假设有这样的代码:
代码非常简单,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函数线程间切换,看上去这两个线程就好像在同时运行,但如果是在多核系统下,这两个线程可以真正的并行起来。
在编程语境下,异步往往和线程进程等相关。
最后举个例子,同步就好比你排队去自助售票机取电影票,你必须排队等待前一个人取完电影票才能到你,你不能在前一个取票的过程中取自己的票,这时我们说取电影票时你和前一个人是同步的。
而异步就好比去吃大餐,你在座位上看菜单点菜,其它人也可以点菜,你不需要等待其它人吃完饭才能下单,这时我们说你点菜和其它人吃饭是异步的。
关键词:
- 异步编程到底在说啥?2023-07-28
- 秸秆变废为“食” 粤桂项目带来增收环保“2023-07-28
- 网球中巡赛日照站,王雅繁击败王蔷夺冠:这2023-07-28
- AMD R9 7945HX3D处理器发布:16核32线程2023-07-28
- 在成都大运会乐享绿色低碳时光2023-07-28
- 夏粮收购市场稳中向好 丰收粮卖上好价钱2023-07-28
- 沉浸式体验远光灯 网友:司机蹲下那一刻 2023-07-28
- “杜苏芮”将影响河南:未来两天河南北部有2023-07-28
- 贵阳一男子跪地6小时求婚未见女生露面当众2023-07-28
- “杜苏芮”登陆福建晋江沿海,当地居民:早2023-07-28
- 现场直击:合成橡胶期货及期权鸣锣开市丨一2023-07-28
- 中国物流与采购联合会:上半年物流运行整体2023-07-28
- 欧洲央行决定再次加息25个基点,预计通胀仍2023-07-28
- 国家税务总局:上半年新增减税降费及退税缓2023-07-28
- 陕西今年上半年GDP15503.20亿元,同比增3.7%2023-07-28
- 福建省转移危险区域人员12万多人2023-07-28
- 台风“杜苏芮”9时55分在晋江沿海登陆2023-07-28
- “杜苏芮”晋江登陆 中心和外围区域道路交2023-07-28
- 福建各地全力保障台风天期间“菜篮子”供应2023-07-28
- “杜苏芮”登陆!对福建风雨影响很大!2023-07-28
- 敲响大运“前奏” 成都大运会公园文化活动2023-07-28
- 世界冠军邓丽娟分享追梦故事,相约成都大运2023-07-28
- 乒乓球世界冠军丁宁分享追梦故事,体育让梦2023-07-28
- 迎接成都大运会 我们的爱像夏天的风2023-07-28
- 特写丨驻点大运村2023-07-28
- 男子在外卖APP上搜“色拉” 敲诈经营范围2023-07-28
- 浙川推出门票互免优惠举措覆盖浙江494家旅2023-07-28
- 感动全网的环卫工儿子,被录取了!2023-07-28
- 重庆13个区县遭遇暴雨 12条河流出现超警戒2023-07-28
- “四好农村路”:乡村振兴中的美丽“蝶变”2023-07-28