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

Dar*_*rio 7 .net concurrency functional-programming

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

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

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

甚至软件事务内存(Haskell的STM)

甚至考虑到ParallelFX,这个列表只是部分涵盖.

是否有某些更深层次的原因反对提供这些功能(而是希望人们IAsyncResult可以随意使用),或者计划在未来进行整合?

Gre*_*g D 6

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

鉴于此,BCL对新概念的进入门槛相当高,但这并不意味着它们没有发生.最近,在.Net 4中,将引入任务并行库.早期版本的TPL实际上包含了一种Future<T>类型,后来被更新的 抽象所取代.

通过研究语言Axum,还在频道/等领域进行了积极的研究.

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