ruby并发中的承诺还是未来?什么时候应该用哪个?

ruby并发中的承诺还是未来?什么时候应该用哪个?,ruby,concurrency,promise,rubygems,future,Ruby,Concurrency,Promise,Rubygems,Future,一般来说,承诺和特性是密切相关的,如果不是synonims的话。在创业板的文件中也有这样的说法。因此,在什么情况下应该使用哪一个是令人困惑的。它们在创业板中有何关联?其中一个级别比另一个低还是过时?它们基本上都做相同的事情吗 此外,这些因素的存在使其更加令人困惑: * Concurrent::Promises.future * Concurrent::Promises::Future * Concurrent::Future * [...possibly something similar...

一般来说,承诺和特性是密切相关的,如果不是synonims的话。在创业板的文件中也有这样的说法。因此,在什么情况下应该使用哪一个是令人困惑的。它们在创业板中有何关联?其中一个级别比另一个低还是过时?它们基本上都做相同的事情吗

此外,这些因素的存在使其更加令人困惑:

* Concurrent::Promises.future
* Concurrent::Promises::Future
* Concurrent::Future
* [...possibly something similar...]

简而言之,
Future
是关于异步执行的。它是对系统线程的高级抽象(Ruby
Thread
class)。因此,当您需要加速和并行一些计算时,您需要使用线程。但是它是一些低级的东西,因此更容易使用
Future
s。好处之一是
Future
s的实现通常使用线程池,因此您可以管理并发级别和系统资源消耗。因此
Future
解决的问题是底层线程并发模型的复杂性

另一方面,
Promise
是关于架构和组合的。与并发无关。它是回调的高级抽象,是
Observer
模式的一个子类型。它允许解耦组件,从而产生一些结果 以及使用此结果的组件。生产者和消费者可能对彼此一无所知。所以,
Promise
解决的问题是回调方法带来的复杂性和耦合性


因此,关于并发ruby。它们提供了
Promise
Future
的经典版本。但现在他们也提供了一种新的API——
承诺
(最后是
s
),它看起来就像是承诺和未来与统一API的结合。它实现(实际重用)
Promise
Future
库,但提供了一些新的接口。例如,future的行为类似于promise,允许注册回调,并且可以链接到promises。

自述文件说,Futures已被弃用,并被promises所取代……如果promise和future基本上是synonims,为什么promise与并发无关?promises可以在完全同步的代码中使用。这是一种组织回调的方法。