用语言运行时(Common Language RuntimeCLR)以锁线程和线程池的形式为并行编程提供基本的支持不过随着多核CPU重要性的逐步增加大家又重燃构建高级并行编程函数库的热情
很多人现在都投身于函数式编程的世界由于它们具有不可变的对象以及与生俱来的线程安全属性基于F#语言的Haskell和OCaml可以归入此类其他例如Erlang这样倍受大家偏爱的语言是基于消息传递和轻量级进程的除了支持F#外微软也尝试了几种不同的方式以需求并行编程的准确提炼
最先公布的产品是并行LINQ(Parallel LINQ)也即所谓的PLINQ类似对SQL的处理一样并行的版本通过语言本身来处理而无需开发人员的努力通过把AsParallel附加到查询上就能正常工作了不过正如SQL一样在这里通常还是需要设定很多额外的选项
下一个出现的是结构化并行性语法(Structured Parallelism)这种技术会让人想起OpenMP不过它不像OpenMP那样使用编译器指令标记微软的解决方案是基于匿名委托最直观的反应就是代码只需作细微的修改在for语句内的代码块可以作为参数传递到ParallelFor函数中
如果代码无法轻易地表示为查询或迭代循环则可以选择任务并行库(Task Parallel Library)乍看之下它似乎是另外一种线程池但它却支持任务之间的父子关系
为了对应用程序进行更好地控制微软提供了协调一致的数据结构(Coordination Data Structures)它们为未来提供了线程安全的集合以及改良过的同步对象