PLINQ:Parallel Extensions会自动处理单核和多核环境吗?

Ben*_*ter 0 .net c# vb.net .net-3.5

LINQ的并行扩展会自动检测核心数量并全部利用它们吗?相反,如果代码在单个核心机器上运行,它仍然可以工作,还是我必须检测核心数量并告诉PLINQ要运行多少个?

可悲的是,我无法访问任何单个核心机器来测试我的代码所以我甚至无法为自己测试这个并且我无法在其他地方找到任何有用的信息...

此外,虽然最初看起来很明显何时使用并行性,但是它是否有任何关于它应该在哪里的经验法则,并且重要的是应该使用它?

附注:我不一定在特定环境中编程.我倾向于根据手头的任务在Web,客户端/服务器应用程序,Windows应用程序,Windows服务和控制台实用程序之间平等地分配我的时间(取决于项目).

Mar*_*ell 8

是的,它处理核心数本身,并且在单核,伪多核(HT)上很好,直到愚蠢的核心数量 - 但你需要对Parallel自己进行编码; 它不是简单地控制你现有的代码.

对于何时使用并行...这是一个巨大的话题.实际上,如果你正在进行网络编程 - 我会忘记它,只是让IIS为不同的请求使用不同的并行线程(而不是让一个请求占用机器).

它主要用于大数字运算/数据收集 - 无论是在专用的应用服务器上还是在客户端上.