{"id":55940,"date":"2010-02-11T14:47:00","date_gmt":"2010-02-11T14:47:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/pfxteam\/2010\/02\/11\/faq-which-net-language-is-best-for-parallelism\/"},"modified":"2010-02-11T14:47:00","modified_gmt":"2010-02-11T14:47:00","slug":"faq-which-net-language-is-best-for-parallelism","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/faq-which-net-language-is-best-for-parallelism\/","title":{"rendered":"FAQ :: Which .NET language is best for parallelism?"},"content":{"rendered":"<p class=\"MsoNormal\"><font size=\"3\" face=\"Calibri\">The new parallelization support in the .NET Framework 4 is implemented purely in libraries and the runtime and does not require special compiler support.&nbsp; Therefore, it is available to all compliant .NET languages.&nbsp; This includes all of the managed languages that ship as part of Visual Studio 2010 (Visual C#, Visual Basic, Visual F#, and C++\/CLI) as well as other Microsoft-provided languages (e.g. IronPython) and 3<sup>rd<\/sup>-party developed languages.<span>&nbsp; <\/span>In fact, our samples available at <\/font><a href=\"https:\/\/code.msdn.microsoft.com\/ParExtSamples\"><font color=\"#0000ff\" size=\"3\" face=\"Calibri\">https:\/\/code.msdn.microsoft.com\/ParExtSamples<\/font><\/a><font size=\"3\"><font face=\"Calibri\"> include examples in multiple languages.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"3\"><font face=\"Calibri\">However, some of the APIs in .NET 4 have been designed with certain language capabilities in mind.&nbsp; For example, C#, Visual Basic, and F# all support lambda expressions and closures, which enable easily defining the bodies for Tasks and parallel loops.&nbsp; Query comprehensions in C# and Visual Basic, and sequences in F#, can help to write cleaner, more elegant PLINQ queries.&nbsp; F#&rsquo;s support for asynchronous workflows and its provision of immutability of data by default are geared towards making it easier to write highly concurrent applications.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"3\"><font face=\"Calibri\">In summary, you can introduce parallelism in your application using any .NET language.&nbsp; Which one is best still depends on your scenario.<\/p>\n<p><\/font><\/font><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The new parallelization support in the .NET Framework 4 is implemented purely in libraries and the runtime and does not require special compiler support.&nbsp; Therefore, it is available to all compliant .NET languages.&nbsp; This includes all of the managed languages that ship as part of Visual Studio 2010 (Visual C#, Visual Basic, Visual F#, and [&hellip;]<\/p>\n","protected":false},"author":485,"featured_media":58792,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7908],"tags":[7907,7923,7909],"class_list":["post-55940","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pfxteam","tag-net-4","tag-faq","tag-parallel-extensions"],"acf":[],"blog_post_summary":"<p>The new parallelization support in the .NET Framework 4 is implemented purely in libraries and the runtime and does not require special compiler support.&nbsp; Therefore, it is available to all compliant .NET languages.&nbsp; This includes all of the managed languages that ship as part of Visual Studio 2010 (Visual C#, Visual Basic, Visual F#, and [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/55940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/485"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=55940"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/55940\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/58792"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=55940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=55940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=55940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}