微软的CCR vs任务并行的图书馆
-
09-09-2019 - |
题
Microsoft具有至少两个不同的approches到改进的支持的并行行动。
1)协调并发Runtime(CCR)其是Microsoft机器人技术工作室和 CCR&DSS工具包
2)任务并行数据库(TPL)(部分。净4.0现在在测试1释放)
我想知道如果任何人有经验,有了这两个不同的软件和会比较和对比他们吗?
解决方案
总的来说,两个框架具有互补的,但不同的目标。
在CCR提供原语并发进程之间的协调。协调是使一堆过程作为一个整体工作胶水 - 所以CCR提供原语为通过所谓的通道交换消息。过程可以等待消息到信道,或多个信道,或多个信道等等中的任何一个上到达。这是并发进程的协调特定的范例,效果很好。另请注意,是不是免费的 - 你必须在从微软单独购买
在TPL提供原语和基础设施,以 parallellize 半自动地计算或算法。一个最明显的原语有并行for循环 - 看起来有点像一个for循环,但试图并行执行环
因此,如果你有一堆过程,你想在一个更高的水平坐标比使用共享状态和锁,使用CCR的。如果你有一个计算密集的过程,你想多核机器上高效运行,使用TPL。
其他提示
这不是一个或/或场景。该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() + " ");
});
}
));
}
}
}
不隶属于 StackOverflow