微软至少有两种不同的方法来改进对并发操作的支持。
1)是并发协调运行时(CCR),它是微软机器人工作室和CCR & DSS Toolkit的一部分
2)任务并行库(TPL) ( .NET 4.0的一部分,现在是Beta1版本)
我想知道是否有人有使用这两个不同软件的经验,并对它们进行比较和对比?
发布于 2009-04-20 20:21:25
总的来说,这两个框架都有互补但不同的目标。
CCR提供了用于协调并发进程的原语。协调是使一系列流程作为一个整体工作的粘合剂-因此CCR提供了通过所谓的通道交换消息的原语。进程可以等待消息到达某个通道、多个通道或多个通道中的任何一个通道,等等。这是一个协调并发进程的特殊范例,效果很好。还要注意的是,它不是免费的-你必须单独从微软购买if。
TPL提供了原语和基础设施来半自动地并行化计算或算法。最明显的原语之一是parallel for循环-看起来有点像for循环,但试图并行执行循环。
因此,如果您希望在比使用共享状态和锁更高的级别上协调一堆进程,请使用CCR。如果您有一个计算密集型进程,希望在多核计算机上高效运行,那么可以使用TPL。
发布于 2010-10-22 00:39:08
这不是非此即彼的情况。CCR是一个支持某些编程模式的库。你可以像这样混合使用CCR和TPL代码,这是一个接收委托中的Parallel.For:
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Ccr.Core;
namespace Demo
{
public class Program
{
public static void Main(string[] args)
{
Dispatcher dispatcher = new Dispatcher();
DispatcherQueue taskQueue = new DispatcherQueue("Demo", dispatcher);
Port<int> portInt = new Port<int>();
portInt.Post(Int32.Parse(args[0]));
Arbiter.Activate(
taskQueue,
portInt.Receive(delegate(int count)
{
Parallel.For(0, count, i =>
{
Console.Write(i.ToString() + " ");
});
}
));
}
}
}https://stackoverflow.com/questions/750104
复制相似问题