并行循环遍历字符串列表,将结果返回到另一个列表中

时间:2014-04-07 22:09:27

标签: c# parallel-processing

我有一个字符串列表,我需要执行一些操作。下面是一段完美无缺的简单代码。

我想加快“ProcessList()”方法的执行速度,我的理解是我可以实现一些并行处理,以便并行处理字符串而不是串行处理。

我已经做了一些搜索,但我对这个并行处理的东西相当新,所以我甚至不确定究竟要搜索什么。一个简单的代码示例或链接到一个非常相似的例子将非常有用。

注意:我正在使用.NET 3.5,因此“System.Threading.Tasks”库不可用。如果可能的话,我希望能够在不下载额外库的情况下使用.NET 3.5开箱即用。

using System.Collections.Generic;
using System;

class Program
{
    static void Main(string[] args)
    {
        // get a list of strings
        var list = new List<string>() { "item1", "item2", "item3", "item4" };

        // process the list
        var resultList = ProcessList(list);

        // print out the results of the list
        resultList.ForEach(x => Console.WriteLine(x));
        Console.ReadLine();
    }

    private static List<string> ProcessList(List<string> list)
    {
        // create list to return
        var resultList = new List<string>();

        // loop through each string in the list and call the "ProcessString()" method for each one
        list.ForEach(x => resultList.Add(ProcessString(x)));

        // return list of processed strings
        return resultList;
    }

    private static string ProcessString(string input)
    {
        // do something here
        return input.ToUpper();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以开始阅读以创建自己的处理字符串实现的几个示例:

A Simple Parallel.ForEach Implementation in .NET 3.5

Parallel ForEach Loops in C# 3.5

Optimized Parallel ForEach .NET 3.5

但如果使用外部库是可行的,那么我建议使用Task Parallel Library already available from NuGet

Parallel.ForEach()

它提供了管理MaxDegreeOfParallelismScheduler选项的方法,如果您创建自己的实现,则必须由您自己管理。