.NET Framework용 Parallel Extensions 12월 CTP

Somasegar's WebLog : Parallel Extensions to the .NET FX CTP

Joe Duffy's Weblog - Parallel Extensions CTP is available!

Download details Microsoft Parallel Extensions to .NET Framework 3.5, Dec07 CTP(다운로드)

Parallel Programming with .NET(블로그)

Parallel Computing Developer Center

CPU 파워의 미래가 한 CPU에 여러개의 코어를 넣는(듀얼/쿼드 코어등) 방식을 하나의 큰 가능성으로 가닥을 잡은지 좀 지났지만, 소프트웨어에서 이를 활용하고 있는 %는 그렇게 높지 않습니다. 기존의 프로그래밍 모델들 자체가 태생이 동시에 실행되어 여러개의 코어를 지원할 수 있지 않은 이유로 작지 않은 변화를 필요로 하고 있습니다. 연구는 꽤 오랫동안 계속되어왔지만, 많은 사람들에게 있어서 그 필요성에 비해서 아직은 갈길이 멀다고 판단하는 것 같습니다. 하지만, C++계에서 유명한 Herb Sutter의 The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software에서 이야기하듯이 객체 지향의 다음 단계는 동시성(Concurrency)은 분명히 언젠가는 해결해야할 난제임에는 분명합니다.

마이크로소프트에서도 이를 위해 지속적으로 투자를 해왔고, 그 투자 중 하나로 친숙한(?) .NET Framework에 이런 기능 넣어 더 쉽게 이를 접근할 수 있도록 하는 확장(Extension)을 마련하고 첫 CTP를 공개하였습니다. 이름하여 Parallel Extensions. 여기에는 언어 확장과 함께 이에 따라 실시간에 동시성을 제공하는 런타임을 포함합니다.

Parallel Extensions에서는 프로그래머의 동시성 접근을 위해서 3가지 방법을 제공합니다.

  • PLINQ를 사용하여 SQL과 같이 선언적인 방식으로 how가 아닌 what으로 접근하는 방법
  • 기존의 루프(Loop)나 코드 조각을 쪼개어 동시성을 제공하여 활용할 수 있는 방법(Parallel.For 등)
  • 쓰레드(Thread)와 비슷한 작업(Task) 단위로 나누어서 이들이 동시에 실행될 수 있도록 정의하는 방법(Task, Future 클래스)

개념 자체는 크게 어렵지 않고(개념보다는 실용적인 적용이 더 어려울 것입니다) 설치를 할 경우 도움말을 제공하므로 도움말의 팁과 함께 예제들을 실행해보기를 권합니다. 현재 C#과 VB을 지원합니다. 블로그에 지속적으로 이야기했듯이 CTP는 방향성을 보여주고 사용자의 피드백으로 그 방향이 맞는가를 검증하는 릴리스입니다.