2009-11-17 5 views
7

스칼라, F # 또는 하스켈과 달리 기본 .NET 프레임 워크 (C#이나 VB에서 사용 가능)가 상위 수준의 동시성 패턴을 지원하지 않는 것 같았습니다. .NET에 대한 높은 수준의 멀티 스레딩/동시성 추상화

이 가능한 기본 메커니즘입니다 - 잠금 장치, 모니터, 스레드 풀 -하지만

에 대한
  • 동기화 된 변수 (MVar)
  • 동기 채널
  • 비동기 채널 (이동 또는 Haskell 참조)
  • 액터/메시지 전달 (Erlang-Style)
  • 선물
  • 병렬 계산/목록

또는 소프트웨어 트랜잭션 메모리 (STM for Haskell)

그리고 ParallelFX 심지어 촬영 계정 (F #의 async {} 등),이리스트는 단지 부분적으로 덮여 Linq를 통해

  • 작성 가능 비동기식 계산을 작용 .

    그러한 기능을 제공하는 것에 대한 더 깊은 이유가 있습니까? (또는 사람들이 IAsyncResult로 뒤죽박죽되기를 원하는가?) 또는 앞으로 통합 될 계획입니까?

  • +0

    엄청난 양의 기능 중복이 목록에 있습니다. 나는 모든 것을 하나의 환경에서 원한다고 생각하지 않는다. –

    +0

    예를 들어, 귀하의 예제 언어와 달리..NET 프레임 워크는 객체 지향 패러다임만을 염두에두고 설계되었으므로 Scala는 다중 패러다임이고 F # 및 Haskell은 기능적입니다. – SpaceghostAli

    +4

    @SpaceghostAli - .NET은 객체 지향 패러다임 용으로 만 설계되었으며 그 즉시 F # (실행되는 언어)이 기능적입니까? 또한, 함수 프로그래밍을 허용하도록 설계된 Linq와 같은 것에 대해서는 잊고 있습니까? –

    답변

    6

    대소 문자를 마스터하지 않고 동시 소프트웨어를 사용하는 데 사용할 수있는 최상의 추상화에 대한 적극적이고 지속적인 연구가 있습니다. 대부분의 개발자는 해당 기술을 개발할 시간이나 성향이 없습니다.

    이 점을 감안할 때 BCL은 새로운 개념에 대한 진입 장벽이 상당히 높지만 그럴 수는 없습니다. 가장 최근에 .Net 4에서는 Task Parallel Library이 소개 될 예정입니다. 실제로 TPL의 이전 버전은 newerabstractions으로 대체 된 이후에 실제로 included a Future<T> type입니다.

    연구실 Axum을 통해 채널/등의 분야에서 활발한 연구가 진행 중입니다.

    분명히 팀의 일원이 아니기 때문에 Microsoft에서는 작동하지 않지만이 분야에서 이미 널리 보급 된 것 이상으로 혁신을 추진하고 싶습니다.

    +0

    TPL은 동시성이 아니라 병렬성을위한 것입니다. –

    +0

    맞습니다. Axum은 동시성 연구 였고, 그로부터 얻은 개념은 이제 (분명히) .NET 4.5로 옮겨 가고 있습니다. –

    2

    저는 Greg D와 동의합니다. "물건"이 많이 있습니다. MS는 새로운 .Net4 프레임 워크와 Axum 프로젝트를 사용했다. 모든 접근 방식에서 볼 수있는 문제는 분산 형/병렬/분산 형 컴퓨팅 분야의 기술, 지식 및 경험이 매우 제한적이라는 점입니다. 나는 그 누구도 기분을 상하게하지는 않겠지 만, 대학과 교육자들은 일반적으로이 주제들에 더 많은 관심을 기울여야한다고 생각합니다. 그러나 내가 생각하고 바라는 점은 MS가 Axum, Axum, CCR & DSS, 비동기 에이전트 라이브러리 등등의 많은 아이디어를 구현하면서 주류 인식을 창출하고 멀티 코어/클라우드 컴퓨터 시스템에 대한 일반적인 추세/필요성, 더 빨리 볼 수 있습니다 :)

    +0

    이제 Axum을 주류로 만드는 비트를보고 만져도 여전히 복잡해 졌다고 생각하십니까? (가능할 수있는 프리미티브로 작업하는 것보다 복잡 할 수 있습니다)? –

    관련 문제