首页 > 解决方案 > 在多个线程上执行具有不同参数的无序方法的最佳方法

问题描述

我有一个很大的数字列表(其中 4,718,515 个),我需要对每个数字运行一个方法。我有一个方法Check(number)需要与numbers.

我不知道在 c# 中解决这个问题的最有效方法

如果有帮助,这里有一些例子,说明我如何用其他语言做到这一点

Python:

pool.imap_unordered

在 Java 中:

forkJoinPool = new ForkJoinPool(processes);
            forkJoinPool.submit(() -> words.stream()
                .unordered()
                .parallel()
                .filter(CheckValidity::checkValidity)
    

标签: c#multithreadingthreadpool

解决方案


在 C# 中有PLINQ

var desiredResult = numbers
   .AsParallel()
   .AsUnordered()
   .Where(number => Check(number))
   .ToArray();

推荐阅读