您现在的位置是:亿华云 > IT科技类资讯
异步编程到底在说啥?
亿华云2025-10-09 12:56:02【IT科技类资讯】9人已围观
简介大家好,我是小风哥。有的同学可能注意到了最近更新频率有点慢,除了工作外小风哥也确实在忙些其它事情,这里先卖个关子,过段时间会和大家汇报的图片。之前很多同学在微信上问能不能讲讲异步编程是怎么一回事儿,今
大家好,异步我是编程小风哥。
有的到底同学可能注意到了最近更新频率有点慢,除了工作外小风哥也确实在忙些其它事情,说啥这里先卖个关子,异步过段时间会和大家汇报的编程图片。
之前很多同学在微信上问能不能讲讲异步编程是到底怎么一回事儿,今天就和大家简单聊一聊这个话题。说啥
我们以函数调用为例,异步假设有这样的编程代码:
void B() { lines = read(filename); sum(lines); } void A() { ... B(); ... }代码非常简单,B函数读取一个文件,到底文件里保存的说啥是一行行数据,然后加和,异步A函数中的编程某个位置调用B函数。
此时,到底我们说这是同步调用,因为A函数后续代码必须等待B函数处理完文件才能继续执行。免费信息发布网
随着业务不断发展,B函数处理的文件越来越庞大,此时处理一次文件耗时2小时,假设A函数后还有一行重要的代码:
void A() { ... B(); something_important(); ... }这就意味着调用B函数后需要等待2个小时才能执行到something_important这行代码,而something_important函数对时间要求非常苛刻,该怎样改进呢?
其实很简单,我们可以在B函数内部创建一个线程,在线程中处理文件:
void handle_file() { lines = read(filename); sum(lines); } void B() { thread t(handle_file); } void A() { ... B(); something_important(); ... }这样B函数被调用后创建完线程即可立即返回,紧接着开始执行something_important这行代码,CPU在执行something_important这行代码时可能文件还没有开始处理,这样函数A不再依赖于文件处理,这时我们说函数B函数就是异步调用的,函数A异步于文件处理。
如果是在单核系统下,CPU会不断在处理文件线程和A函数线程间切换,看上去这两个线程就好像在同时运行,但如果是在多核系统下,这两个线程可以真正的并行起来。高防服务器
在编程语境下,异步往往和线程进程等相关。
最后举一个例子。
同步就好比你排队去自助售票机取电影票(话说小风哥已经很久很久没有去电影院看电影了),你必须排队等待前一个人取完电影票才能到你,你不能在前一个取票的过程中取自己的票,这时我们说取电影票时你和前一个人是同步的。
而异步就好比去吃大餐,你在座位上看菜单点菜,其它人也可以点菜,你不需要等待其它人吃完饭才能下单,这时我们说你点菜和其它人吃饭是异步的。
本文转载自微信公众号「码农的荒岛求生」,可以通过以下二维码关注。转载本文请联系码农的荒岛求生公众号。
很赞哦!(21366)
相关文章
- 解析之后一般在十分钟内生效,如果没有生效可以联系域名服务商进行沟通。
- 带你了解 Vue-Router 的两种路由模式
- 防御式CSS是什么?这几点属性重点防御
- 如何使用内存中副本提高矢量数据库的读取吞吐量
- 众所周知,com域名拥有最大的流通市场和流通历史。最好选择com域名,特别是在购买域名时处理域名。其次可以是cn域名、net域名、org域名等主流域名,现在比较流行的王域名和顶级域名,都是值得注册和投资的。
- MySQL-CommunicationsException异常的三个典型场景及解决方法
- MySQL 8.0.31并行构建索引特性管窥
- 三种管理 C 程序中标志位的方法,最后一种比较秀
- 尽量不要在域名中出现特殊字符,这样的域名很容易导致访问者输入错误,同时给人留下不专业的印象,降低网站的可信度,并流失大量潜在客户。
- Nacos 2.2 发布,正式支持其他数据库