响应式扩展(Rx)是否会取代任务并行库(TPL)?

9

在跟着Rx.NET示例学习后,我对反应式扩展的概念和实现感到惊叹。它似乎为开发人员提供了一种更可维护的模式,以实现与.NET 4.0任务并行库相同类型的多线程并行编码。

Rx.NET会取代TPL吗?它应该吗?

1个回答

16
简而言之,不行。
任务并行库(TPL)提供了工作分配(并发)以及对更大的工作进行并行优化(并行),同时抽象了工作分配的实际机制(线程)。
C#添加了"async"关键字来帮助从语言级别管理异步性。Rx已经更新以支持这个特性。
Rx提供了一个框架来使用标准操作符组合和管理异步数据流。虽然在Rx中有一些调度程序的重叠,但这只是一种抽象。事实上,并行的推荐调度程序是TaskScheduler,它使用TPL。
另请参见Rx论坛上Jeffrey van Gogh的回答相反的问题。
此外,这个问题可能会有用。

TPL 不是关于并行,而是关于并发的。 - user
1
@user - 是的,虽然PLINQ是TPL的一部分,但它提供了并行处理。 - Richard Szalay
3
你一定能看出那条评论的讽刺意味,“任务并行库不是关于并行处理”的说法。;-) - Lee Campbell
虽然这是一个老问题,但我不认为我可以同意这个答案的前提条件(尽管结果是另一回事)。对我来说,异步性是关于可观察对象的生成,而任务也可以被视为可观察对象。因此,Rx 是一个不同的概念框架,提供了一个不同的术语,涵盖了 TPL + async 所涉及的一切。 - Sentinel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接