2009-04-15 3 views
6

Microsoft는 동시 작업 지원 개선을 위해 최소한 두 가지 다른 방법을 제공합니다.Microsoft의 CCR 대 작업 병렬 라이브러리

1) 마이크로 소프트 로보틱스 스튜디오의 일부 및 .NET 4.0의 CCR & DSS Toolkit

2) 작업 Paralell 라이브러리 (TPL) (파트 현재 베타 1 개 버전)

인 동시성 조정 런타임 (CCR)

누구나이 두 가지 다른 소프트웨어에 대한 경험이 있고 그것을 비교하고 대조하는지 알고 싶습니다.

+0

읽기 얼랑 동시성, CCR은 얼랑 동시성 복사, 전형적인 마이크로 소프트의 방법입니다. 작업 parellel는 멀티 스레드입니다 – mamu

답변

9

두 프레임 워크 모두 보완되지만 목표는 다릅니다.

CCR은 동시 프로세스의 조정을위한 기본 요소를 제공합니다. 조정은 일련의 프로세스를 전체적으로 작동시키는 접착제입니다. 따라서 CCR은 소위 채널을 통해 메시지를 교환하기위한 기본 요소를 제공합니다. 프로세스는 메시지가 채널이나 여러 채널 또는 여러 채널 중 하나에 도착할 때까지 기다릴 수 있습니다. 이는 잘 작동하는 동시 프로세스의 조정을위한 특별한 패러다임입니다. 또한 무료는 아닙니다. Microsoft에서 별도로 구매해야합니다.

TPL은 계산 또는 알고리즘을 반자동으로 병렬 처리하는 기본 및 인프라를 제공합니다. 가장 명백한 기본 요소 중 하나는 병렬 for 루프입니다. for 루프와 비슷하지만 루프를 병렬로 실행하려고합니다.

따라서 공유 상태 및 잠금을 사용하는 것보다 상위 수준에서 조정하려는 프로세스가 많은 경우 CCR을 사용하십시오. 멀티 코어 머신에서 효율적으로 실행하려는 계산 집약적 프로세스가있는 경우 TPL을 사용하십시오.

+4

schelfthout : 며칠 전부터 무료 (마침내) – Toad

5

어느 하나 또는 그 이상의 시나리오가 아닙니다. 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() + " "); 
        }); 
       } 
      )); 
     } 
    } 
} 
관련 문제