草庐IT

PARALLEL

全部标签

c# parallel foreach 循环查找索引

我正在尝试读取文本文件中的所有行并计划显示每一行信息。如何找到循环内每个项目的索引?string[]lines=File.ReadAllLines("MyFile.txt");Listlist_lines=newList(lines);Parallel.ForEach(list_lines,(line,index)=>{Console.WriteLine(index);//Console.WriteLine(list_lines[index]);Console.WriteLine(list_lines[0]);});Console.ReadLine(); 最

c# - 现有的类似于Parallel.For的LINQ扩展方法?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:LINQequivalentofforeachforIEnumerableienumerable的linq扩展方法非常方便……但如果您只想对枚举中的每个项目应用一些计算而不返回任何内容,那么就没那么有用了。所以我想知道也许我只是错过了正确的方法,或者它是否真的不存在,因为如果它可用的话我宁愿使用内置版本......但我还没有找到一个:-)我可以发誓某处有一个.ForEach方法,但我还没有找到它。与此同时,我确实编写了自己的版本以防它对其他人有用:usingSystem.Collections;usingSys

c# - 如果在单独的方法中调用,为什么 Parallel.Invoke 会快得多?

我执行了3次QuickSort-Algorithm并测量了对5000万个随机数进行排序的时间:顺序(大约需要14秒)使用Parallel.Invoke()作为排序算法的相同方法(耗时约12秒)使用Parallel.Invoke()在单独的方法中(耗时约7秒)所以我的问题是:如果在单独的方法中调用,为什么Parallel.Invoke()会快得多?在我的电脑上,示例3.的速度是示例2的两倍多。2。使用Parallel.Invoke()作为排序算法的相同方法publicclassParallelQuickSort{privateconstintThreshold=100;publicsta

c# - 支持 .NET 4.0 中的进度报告和增量结果 "Task Parallel Library"

我知道TaskParallelLibrary仍处于测试阶段,可用资源可能会减少,但从我所读的内容来看,图书馆对taskscheduling给予了非常特殊的对待。,exceptionhandling和cancellation.但我没有找到任何关于进度报告和发送增量结果的任务引用。这两件事似乎太重要了,不容忽视。您能否阐明如何在任务并行库中处理这些问题或引用一些解释它们的文章? 最佳答案 这个例子更新了一个进度条:usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;

c# - Parallel.ForEach 调试或逐步执行

是否有一种简单的方法来遍历parallel.foreach?使用断点进行调试的最佳方法是什么? 最佳答案 在调试期间,我经常将我的Parallel.ForEach设置为在MaxDegreeOfParallelism设置为1的情况下运行。这使得调试变得更加简单。constboolforceNonParallel=true;varoptions=newParallelOptions{MaxDegreeOfParallelism=forceNonParallel?1:-1};Parallel.ForEach(collection,opti

Java 整数比较 : greater than

我有一个包含一百万个整数的数组,因为我正在试验并行快速排序。有时我有以下奇怪的行为:为了检查数组是否排序正确,我在排序后输入了以下代码:for(intj=0;jarray_parallel[j+1])System.out.println("ERROR!NOTSORTEDCORRECTLY!");在某些情况下,我得到错误输出,它没有正确排序,当我调试时,我发现以下内容(示例,总是不同的):j=1942array_parallel[1942]=6000;array_parallel[1943]=6000;(尝试忽略数字,它不是任何特定值或范围)所以它总是在左值等于右值的情况下。好吧,对于更

java - 正确使用Java中的并行流

我正在Java中试验并行流,为此我有以下代码来计算n之前的素数。基本上我有两种方法calNumberOfPrimes(longn)-4种不同的变体isPrime(longn)-2种不同的变体实际上,我对上述每种方法都有2种不同的变体,一种使用并行流的变体,另一种不使用并行流的变体。//itselfusesparallelstreamandcallsparallelvariantisPrimeprivatestaticlongcalNumberOfPrimesPP(longn){returnLongStream.rangeClosed(2,n).parallel().filter(i->

Java Parallel Streams 关闭线程

我已经编写了一个使用Java流的方法,它简单地遍历对象列表并在满足特定条件时返回true/falseJava方法:booleanmethod(SampleObjsampleObj){ListtestList=invokeSomeMethod();intresult=testList.parallelStream().filter(listObj->(listObj.getAttr()=1)).count(listObj->listObj.isAttr4());return(result>10);}我也为此编写了一个Mock测试用例。当我执行测试用例时,测试成功,但是我收到项目自定义错误

java - StreamEx.parallel().forEach() 在 .map() 之后不并行运行

我注意到,如果我使用StreamEx库通过自定义ForkJoinPool并行处理我的流,如下所示-后续操作会在该池的并行线程中运行。但是,如果我添加一个map()操作并并行生成流-仅使用池中的一个线程。下面是演示此问题的最小工作示例的完整代码(没有所有导入)。executeAsParallelFromList()和executeAsParallelAfterMap()方法之间的唯一区别是在.parallel()之前添加了.map(...)调用。importone.util.streamex.StreamEx;publicclassParallelExample{privatestati

java - 生命游戏 : how to have "entities" to evolve in parallel?

好吧,标题不清楚,这就是我的意思。我正在编写某种游戏(比如生命游戏)。例如,有动物(每个动物都是一个类的Java实例)。所有这些动物都在map上,所有这个“世界”在每个“回合”进化。这些动物可以在每个回合进行操作。示例:一只狼杀死了一只羊。但是,我对在状态之间进行这些进化的“方式”有疑问,因为结果将取决于我循环遍历动物的顺序。示例:Wolffirst:狼先杀了羊(然后羊死了,所以没有Action)Sheepfirst:羊吃了一些草,然后然后(轮到狼)狼杀死了羊我该如何解决这个问题?多线程?(但我会有很多动物,比如1000只甚至更多……)。是否有一种算法,一种“方式”来做到这一点?谢谢