.NET的高级多线程/并发抽象

时间:2009-11-17 19:07:04

标签: .net concurrency functional-programming

我只是想知道为什么,与Scala,F#或Haskell不同,基本的.NET框架(在C#或VB中可用)似乎对更高级别的并发模式几乎没有本机支持。

有可用的基本机制 - 锁,监视器,线程池 - 但是

  • 同步变量(MVar
  • 同步频道
  • 异步渠道(参见Go或Haskell
  • 演员/留言传递(Erlang-Style
  • 期货
  • 并行计算/列表功能
  • 通过Linq进行可组合异步计算(如F#的async {}

甚至软件事务内存(STM for Haskell

即使考虑到ParallelFX,这个列表也只是部分涵盖。

是否存在某些更深层次的理由反对提供此类功能(而是希望人们可以使用IAsyncResult),或者计划在未来进行整合?

2 个答案:

答案 0 :(得分:6)

对最佳和最有效的抽象进行积极和持续的研究,可用于实现并发软件而无需掌握细节b / c大多数开发人员没有时间或倾向于将技能发展到该级别。< / p>

鉴于此,BCL对新概念的进入门槛相当高,但这并不意味着它们没有发生。最近,在.Net 4中,将引入Task Parallel Library。早期版本的TPL实际上included a Future<T> type已被newer abstractions取代。

通过研究语言Axum,在频道/等领域也开展了积极的研究。

我显然不是团队的成员而且我不为微软工作,但我的理解是,除了已经广泛使用的产品之外,还希望在这个领域进行创新。

答案 1 :(得分:2)

我同意Greg D,有很多“东西”要来了。 MS使用新的.Net4框架及其Axum项目。我在所有这些方法中看到的问题是它们变得非常复杂,并且分布式/并行/分布式计算领域的技能,知识和经验相当“有限”。我写这不是为了得罪任何人,但我认为大学和教育工作者一般都要更加关注这些话题。但是,我的想法和希望是,MS通过实施许多这些想法,Axum,CCR和DSS,异步代理库等创建的主流意识以及对多核/云计算机系统的总体趋势/需求,我们很快就会看到:)