我是 .Net 平台的新手。我搜索了一下,发现在 .Net 中有几种方法可以进行并行计算:
任务并行库中的并行任务,即 .Net 3.5。
PLINQ、.Net 4.0
异步编程,.Net 2.0,(异步主要用于执行 I/O 繁重的任务,F# 具有支持此功能的简洁语法)。我列出这个是因为在 Mono 中,似乎没有 TPL 或 PLINQ。因此,如果我需要编写跨平台并行程序,我可以使用异步。
.Net 线程。没有版本限制。
您能否就这些给出一些简短的评论或在此列表中添加更多方法?
最佳答案
您确实需要进行大量研究才能确定如何有效地使用多线程。有一些不错technical articles , 的一部分 Microsoft Parallel Computing team's site .
在我的脑海中,有几种方法可以实现多线程:
Thread
类。ThreadPool
,它还支持 I/O 绑定(bind)操作和 I/O 完成端口。Begin*
/End*
异步操作。- 基于事件的异步编程(或“EBAP”)组件,使用
SynchronizationContext
。 BackgroundWorker
,它是一个定义异步操作的 EBAP。Task
.NET 4 中的类(任务并行库)。- 并行 LINQ。有一个good article关于 Parallel.ForEach(任务并行库)与 PLINQ。
- Rx或“LINQ to Events”,它还没有非 Beta 版本,但已接近完成并且看起来很有希望。
- (仅限 F#)异步工作流。
更新:有一篇文章Understanding and Applying Parallel Patterns with the .NET Framework 4可供下载,它给出了关于哪些解决方案用于哪些类型的并行场景的一些方向(尽管它假设 .NET 4 并且不涵盖 Rx)。
关于c# - .Net 中可用的并行技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883632/