Future & Promise

· 300 words · 1 minute read

基于异步事件的编程框架基本上都有 FuturePromise 的概念。比如, 主流编程语言中 C++11 有std::futurestd::promise, 而 Java 1.5 开始有Future, Java 1.8 有CompletableFuture.

Future & Promise 本质上是同一个计算的两个方面:1

  • 对于调用者而言,调用某异步会立即返回。代价是调用返回的 Future 中可能并不包含计算结果,但包含对 Promise 的引用;

  • 对于异步方法的实现者而言,它需要立即返回一个 Future 给调用者,同时需要运行异步任务(比如,通过提交任务到运行任务队列的线程池之类),得到结果后填入 Future 中的 promise 对象。

对于调用者,Future 只读;对于实现者,promise 可写(通常只写一次)。这里这里有更详细的讨论。

comments powered by Disqus