文件 concurrent.futures.Future.set_result()
说
此方法只能由以下人员使用: Executor
实现和单元测试。
这同样适用于以下文件: set_exception()
及
设置运行或通知取消()。
但是我可以想象使用(在java中过去也使用过) Future
用于(轻微)其他目的的对象。在稍微不同的情况下。在这些情况下,我只想使用未来对象。为什么不鼓励这样做?
为了更清楚一点:我讨论了一个相当复杂的事件序列,它涉及两个不同的调度器和东西,以及一个 Future
对象可用于取消此进程并通知其完成。这一框架不是一个框架 Executor
(也不可能是这样)。
1条答案
按热度按时间zynd9foi1#
文档中说的是
set_result()
方法,而不是Future
对象本身,应仅由实现使用。理由对我来说似乎很明显:未来的结果应该是由未来对象封装的工作的结果,但是工作本身(您希望异步运行的代码)不应该关心它是如何执行的。那么,应该允许谁来定义
result()
方法返回?只有调度和启动任务的框架。在您的示例中,您可以传递未来的对象、取消它们、检查它们的状态或检索结果(使用
result()
). 这些操作都不需要您使用set_result()
.