jjzjj

AsParallel

全部标签

c# - 是否可以在 PCL 中使用 .AsParallel 扩展方法?

我在可移植类库类中遇到问题。尽管引用了System.Linq,但我似乎无法使用.AsParallel()扩展方法。这是代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespacePortableClassLibrary1{publicclassClass1{publicClass1(){varlist=newList();}}}list没有AsParallel()方法,它只有AsQueryable和AsEnume

c# - AsParallel() - 在 asp.net 中有 2 个以上的并行线程

我有一个方法,我用不同的参数调用了8次。我用AvailableYears.AsParallel().Select(x=>GetDataForYearWorker(x,CIF)).ToList();GetDataForYearWorker从网络服务同步获取响应。它在我的asp.net应用程序上使用很少的计算能力,但通常每个Web服务响应需要3-5秒。因为对web服务的调用是相互独立的,所以我想同时调用它们。但看起来只能同时运行2个线程。为什么会这样,我如何让8个线程同时工作? 最佳答案 默认情况下,.AsParallel()将在运行查

c# - 并行 Linq 查询优化

一段时间以来,我一直在围绕没有副作用的方法构建我的代码,以便使用并行linq来加快速度。一路走来,我不止一次偶然发现惰性评估使事情变得更糟而不是更好,我想知道是否有任何工具可以帮助优化并行linq查询。我问是因为我最近通过修改一些方法并在某些关键位置添加AsParallel来重构一些令人尴尬的并行代码。运行时间从2分钟下降到45秒,但从性能监视器可以清楚地看出,在某些地方CPU上的所有内核都没有得到充分利用。在几次错误启动后,我使用ToArray强制执行了一些查询,运行时间进一步缩短至16秒。减少代码的运行时间感觉很好,但它也有点令人不安,因为不清楚在代码中的什么地方需要使用ToArr

c# - 如何将 AsParallel 与 async 和 await 关键字一起使用?

我正在查看某人的异步示例代码,并注意到它的实现方式存在一些问题。在查看代码时,我想知道使用asparallel循环遍历列表是否比正常循环遍历列表更有效。据我所知,两者在性能上的差异很小,都用完了每个处理器,并且都谈论了相同的完成时间。这是第一种方式vartasks=Client.GetClients().Select(asyncp=>awaitp.Initialize());这是第二个vartasks=Client.GetClients().AsParallel().Select(asyncp=>awaitp.Initialize());我假设两者之间没有区别是否正确?完整的程序可以在

c# - 即使MSDN另有建议,为什么Parallel.ForEach比AsParallel()。ForAll()快得多?

我一直在做一些调查,以了解如何创建运行在树上的多线程应用程序。为了找到最佳方法,我创建了一个测试应用程序,该应用程序通过C:\磁盘运行并打开所有目录。classProgram{staticvoidMain(string[]args){//varstartDirectory=@"C:\Thefolder\RecursiveFolder";varstartDirectory=@"C:\";varw=Stopwatch.StartNew();ThisIsARecursiveFunction(startDirectory);Console.WriteLine("Elapsedseconds:"

c# - 即使MSDN另有建议,为什么Parallel.ForEach比AsParallel()。ForAll()快得多?

我一直在做一些调查,以了解如何创建运行在树上的多线程应用程序。为了找到最佳方法,我创建了一个测试应用程序,该应用程序通过C:\磁盘运行并打开所有目录。classProgram{staticvoidMain(string[]args){//varstartDirectory=@"C:\Thefolder\RecursiveFolder";varstartDirectory=@"C:\";varw=Stopwatch.StartNew();ThisIsARecursiveFunction(startDirectory);Console.WriteLine("Elapsedseconds:"

c# - Parallel.ForEach() 与 foreach(IEnumerable<T>.AsParallel())

Erg,我试图使用Reflector在BCL中找到这两个方法,但无法找到它们。这两个片段有什么区别?答:IEnumerableitems=...Parallel.ForEach(items,item=>{...});乙:IEnumerableitems=...foreach(variteminitems.AsParallel()){...}使用其中一种会产生不同的后果吗?(假设我在两个示例的括号内所做的任何事情都是线程安全的。) 最佳答案 他们做的事情完全不同。第一个采用匿名委托(delegate),并针对所有不同项目在此代码上并行

c# - Parallel.ForEach() 与 foreach(IEnumerable<T>.AsParallel())

Erg,我试图使用Reflector在BCL中找到这两个方法,但无法找到它们。这两个片段有什么区别?答:IEnumerableitems=...Parallel.ForEach(items,item=>{...});乙:IEnumerableitems=...foreach(variteminitems.AsParallel()){...}使用其中一种会产生不同的后果吗?(假设我在两个示例的括号内所做的任何事情都是线程安全的。) 最佳答案 他们做的事情完全不同。第一个采用匿名委托(delegate),并针对所有不同项目在此代码上并行

c# - 使用 AsParallel() 时无法获取与 Windows 应用程序关联的文件的文件图标

我想显示与文件关联的图标。这对于与普通桌面应用程序关联的文件类型不是问题,但仅对于与(都市/现代)应用程序关联的文件类型而言。如果文件类型与应用相关联并且我正在使用AsParallel(),我只会得到默认的未知文件类型图标。澄清一下,我没有得到null或空图标,而是显示空白纸张的默认图标。如果没有AsParallel(),我会得到正确的图标。我尝试了其他几种获取图标的方法,例如SHGetFileInfo()或直接通过dll调用ExtractAssociatedIcon()。行为始终相同。示例:如果“AdobeAcrobat”是PDF文件的默认应用程序,那么在这两种情况下我都会得到正确的

c# - AsParallel() 的最大并行度

在使用Parallel.ForEach时,我们可以选择定义并行选项并设置最大并行度,例如:Parallel.ForEach(values,newParallelOptions{MaxDegreeOfParallelism=number},value=>{//DoWork})但是在执行PLINQ时:Tabel.AsEnumberable().AsParallel().Where(//Logic)我找不到设置MaxDegreeOfParallelism的方法。我也在网上查了一下,但没有找到任何东西。有人找到解决方法吗?任何帮助表示赞赏。 最佳答案
12