2009-11-17 5 views
7

基本的な.NETフレームワーク(C#またはVBで利用可能)は、Scala、F#またはHaskellとは異なり、より高いレベルの並行処理パターンのネイティブサポートをほとんど持たないようです。.NETのハイレベルマルチスレッド/同時実行抽象概念

利用できる基本的なメカニズムがあります - ロック、モニタ、スレッドプール - しかし、何

  • について同期変数(MVar
  • 同期チャンネル
  • 非同期チャネル(行く参照またはHaskell
  • は、
  • アクター/メッセージパッシング(Erlang-Style
  • 先物
  • 並列計算/リスト

あるいはソフトウェアトランザクショナルメモリ(STM for Haskell

そしてParallelFXのも、撮影したアカウント(F#のasync {}のように)、このリストは部分的にしか覆われているのLINQを通じて

  • 構成可能な非同期計算を機能します。

    このような機能を提供することに深い理由がありますか(または、人々がIAsyncResultのものを使いこなすことを望んでいる)か、これは今後統合される予定ですか?

  • +0

    あなたのリストには機能が重複しています。私は1つの環境ですべてのことをしたいとは思っていません。 –

    +0

    あなたのサンプル言語とは異なり、1つのことがあります。.NETフレームワークはオブジェクト指向のパラダイムのみを考慮して設計されており、Scalaはマルチパラダイムであり、F#とHaskellは機能的です。 – SpaceghostAli

    +4

    @SpaceghostAli - .NETはオブジェクト指向のパラダイム用に設計されていますF#(それで動く言語)は機能的ですか?また、関数型プログラミングを可能にするためだけに設計されたLinqのようなものについては忘れていますか? –

    答えて

    6

    細心の注意を払わずにコンカレントソフトウェアを有効にするために使用できる、最も効果的で最も効果的な抽象化に関する研究が活発に行われています。ほとんどの開発者は、そのスキルを開発する時間や傾きがありません。

    これを考えると、BCLは新しいコンセプトのエントリーに対するかなりの障壁がありますが、それは起こっていないというわけではありません。最近では、.Net 4では、Task Parallel Libraryが導入される予定です。実際にincluded a Future<T> typeという以前のバージョンのTPLは、その後newerabstractionsに置き換えられました。

    また、研究言語Axumを介してチャネル/などの分野で活発な研究が行われています。

    私は明らかにチームの一員ではなく、私はマイクロソフトのために働いていませんが、私の理解は、すでに広く利用可能なものを超えてこの分野で革新したいという願望があることです。

    +0

    TPLは並列性であり、並行性ではありません。 –

    +0

    それは正しいです。 Axumは並行処理の研究であり、そのコンセプトは今や(明らかに).Net 4.5に組み込まれています。 –

    2

    私はGreg Dに同意します。「もの」がたくさん出てきます。 MSには新しい.Net4フレームワークとAxumプロジェクトがあります。これらすべてのアプローチで見られる問題は、分散システムが非常に複雑になり、分散/並列/分散コンピューティングの分野でのスキル、知識、経験がかなり限られていることです。私はそれを書いて誰かを怒らせるわけではありませんが、一般的に大学や教育者はこれらのトピックにもっと注意を払わなければならないと思います。しかし、私が思い浮かべるのは、MSがAxum、CCR & DSS、Asynchronous Agents Libraryなどのアイデアの多くを実装して主流の認識を持ち、マルチコア/クラウドコンピューティングシステムに向けた一般的な傾向/ニーズであることです。もっと早く表示されます:)

    +0

    これを主流にしているAxumのビットを見て触れることができるようになりましたが、まだ複雑になっていると思われますか(おそらく、それらを可能にするプリミティブで作業するより複雑です)。 –

    関連する問題