Mat*_*olf 7 c# concurrency multithreading asynchronous task-parallel-library
我正在寻找使用C#如何为我的特定架构实现并发框架的想法:
我实现了几个模块/容器(实现为类),它们都是单独连接到消息总线的.每个模块主要产生或主要消耗,但所有模块还实现用于两个给定模块之间的通信的请求/应答模式.我对并发和异步编程非常陌生,但本质上希望以并发方式而不是同步方式运行整个架构.鉴于以下要求,我真的很感激为我的特定用例考虑哪些技术(TPL,ThreadPool,CTP,开源库,......)的指针:
鉴于我喜欢管理你建议我应该关注的并发实现?
编辑:我想强调,我面临的最大问题是如何方便地将每个容器/模块连接到线程/任务池,以便每个模块都运行异步,同时仍然提供这些模块之间的完全进出通信.在我没有解决将所有模块连接到可以处理动态涉及的任务/线程数量的并发平台之前,我并不太关心优化单个生产者/消费者模式.
我找到了 n-act http://code.google.com/p/n-act/,一个 .Net 的 Actors 框架,它几乎实现了我正在寻找的东西。我在问题中描述说,我正在寻找更大的框架建议,在我看来,Actor 框架可以解决我所需要的问题。我并不是说 n-act 库将是我实现的,但它是设置可以异步通信并可以在自己的线程上运行的参与者的一个很好的例子。消息传递还支持新的 C#5 异步/等待功能。
上面提到了 Disruptor,还有 TPL 和其他一些想法,我很欣赏您的意见,它实际上让我思考,我花了相当多的时间来理解每个库/框架试图瞄准的目标以及它试图解决的问题,因此,我们的投入非常富有成效。
然而,对于我的特殊情况,我认为我相信 Actors 框架正是我所需要的,因为我主要关心的是异步数据流的交换。不幸的是,我还没有看到任何 .Net 技术中实现的 Actor 模型。TPL Dataflow 看起来非常有前途,但正如 Weismat 指出的那样,它尚未准备好投入生产。
如果 N-Act 没有被证明稳定或可用,那么我将通过 TPL 寻找自定义实现。无论如何,现在是时候充分理解 TPL 必须提供的所有功能,并在设计阶段就开始同时思考,而不是尝试将同步模型转移到异步框架中。
总而言之,“演员模特”就是我所寻找的。
归档时间: |
|
查看次数: |
4391 次 |
最近记录: |