微软至少有两种不同的方式来改进对并发操作的支持。微软的CCR vs任务并行库
1)是并发协调运行时(CCR),这是微软机器人工作室的一部分,CCR & DSS Toolkit
2)任务Paralell库(TPL)(的.NET 4.0部分,现在在Beta 1版)
我想知道是否有人有这两种不同的软件的经验,并会比较和对比它们?
微软至少有两种不同的方式来改进对并发操作的支持。微软的CCR vs任务并行库
1)是并发协调运行时(CCR),这是微软机器人工作室的一部分,CCR & DSS Toolkit
2)任务Paralell库(TPL)(的.NET 4.0部分,现在在Beta 1版)
我想知道是否有人有这两种不同的软件的经验,并会比较和对比它们?
总的来说,两个框架都有互补但不同的目标。
CCR提供协调并发进程的原语。协调是使一系列进程作为一个整体工作的粘合剂 - 所以CCR提供了通过所谓的通道交换消息的原语。进程可以等待消息到达一个频道,多个频道或多个频道中的任何一个等等。这是协调并行进程的特殊范例,运行良好。另请注意,这不是免费的 - 你必须单独购买。
TPL提供基元和基础结构,以便半自动地并行运算计算或算法。最明显的原语之一是并行for循环 - 看起来有点像for循环,但试图并行执行循环。
所以,如果你有一堆你想在高于使用共享状态和锁定的级别上进行协调,请使用CCR。如果您希望在多核计算机上高效运行计算密集型进程,请使用TPL。
schelfthout:自几天前它已经免费发布(最终) – Toad 2010-06-05 14:50:36
这不是一种任何一种情况。 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() + " ");
});
}
));
}
}
}
读二郎山并发,CCR是Erlang的并发拷贝,典型的微软的方式。任务parellel是多线程的 – mamu 2010-10-14 04:58:58