Futures & Promises

Futures & Promises

Futures 和 Promises 是异步编程的一种流行抽象,尤其是在分布式系统的情况下。考虑一下简单的计算机处理器;没有并行性,只有一次完成一项任务或流程的能力。在这种情况下,有时在调用某些阻塞操作时会阻塞处理器。此类阻塞调用可能包括 I/O 操作,例如读/写磁盘,或通过网络发送或接收数据包。而且作为程序员,我们知道像 I/O 这样的阻塞调用要比典型的 CPU 绑定任务(如遍历列表)花费更多的时间。

处理器可以通过两种方式处理阻塞呼叫:

  • 同步:处理器等待,直到阻塞调用完成其任务并返回结果。之后,处理器将继续处理下一个任务。这有时可能会引起问题,因为可能无法有效利用 CPU。它可能会等待很长时间。

  • 异步:当异步处理任务时,在同步情况下等待所花费的 CPU 时间改为使用抢占式时间共享算法来处理其他任务。也就是说,不是等待,而是处理其他任务。因此,只要有更多工作可以完成,处理器就永远不会等待。

在编程领域,为了帮助程序员达到理想的资源利用率水平,引入了许多构造;Futures 与 Promises 即使其中最为广泛使用的概念之一。