上海专业的网站公,贵阳建筑公司网站建设,服务网站,个人网站有哪些类型作者 | 码农的荒岛求生来源 | 码农的荒岛求生之前很多同学在微信上问能不能讲讲异步编程是怎么一回事儿#xff0c;今天就和大家简单聊一聊这个话题。我们以函数调用为例#xff0c;假设有这样的代码#xff1a;void B() {lines read(filename);sum(lines);
}void A() {...… 作者 | 码农的荒岛求生来源 | 码农的荒岛求生之前很多同学在微信上问能不能讲讲异步编程是怎么一回事儿今天就和大家简单聊一聊这个话题。我们以函数调用为例假设有这样的代码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函数线程间切换看上去这两个线程就好像在同时运行但如果是在多核系统下这两个线程可以真正的并行起来。在编程语境下异步往往和线程进程等相关。最后举一个例子。同步就好比你排队去自助售票机取电影票话说小风哥已经很久很久没有去电影院看电影了你必须排队等待前一个人取完电影票才能到你你不能在前一个取票的过程中取自己的票这时我们说取电影票时你和前一个人是同步的。而异步就好比去吃大餐你在座位上看菜单点菜其它人也可以点菜你不需要等待其它人吃完饭才能下单这时我们说你点菜和其它人吃饭是异步的。往期推荐直接root Android设备你知道吗我们到底需要什么样的低代码平台清华大学2021元宇宙研究报告Mendix 发布全球低代码报告点分享点收藏点点赞点在看