From 209f3990025660b9c9260608c9acbf7c27157a45 Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Wed, 9 May 2018 17:30:30 +0800 Subject: [PATCH] 11. --- 11.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 11.md diff --git a/11.md b/11.md new file mode 100644 index 0000000..ea72cd9 --- /dev/null +++ b/11.md @@ -0,0 +1,22 @@ +# 十一、异步编程 + +> 孰能浊以澄?静之徐清; +> +> 孰能安以久?动之徐生。 +> +> 老子,《道德经》 + +计算机的核心部分称为处理器,它执行构成我们程序的各个步骤。 到目前为止,我们看到的程序都是让处理器忙碌,直到他们完成工作。 处理数字的循环之类的东西,几乎完全取决于处理器的速度。 + +但是许多程序与处理器之外的东西交互。 例如,他们可能通过计算机网络进行通信或从硬盘请求数据 - 这比从内存获取数据要慢很多。 + +当发生这种事情时,让处理器处于闲置状态是可耻的 - 在此期间可以做一些其他工作。 某种程度上,它由您的操作系统处理,它将在多个正在运行的程序之间切换处理器。 但是,我们希望单个程序在等待网络请求时能做一些事情,这并没有什么帮助。 + +## 异步 + +在同步编程模型中,一次只发生一件事。 当您调用执行长时间操作的函数时,它只会在操作完成时返回,并且可以返回结果。 这会在您执行操作的时候停止您的程序。 + +异步模型允许同时发生多个事件。 当你开始一个动作时,你的程序会继续运行。 当动作结束时,程序会受到通知并访问结果(例如从磁盘读取的数据)。 + +我们可以使用一个小例子来比较同步和异步编程:一个从网络获取两个资源然后合并结果的程序。 +