gpt4 book ai didi

c# - C# 中的并行处理/并行编程

转载 作者:太空狗 更新时间:2023-10-30 00:12:09 24 4
gpt4 key购买 nike

我需要处理多个函数,这些函数会返回相同类型的记录并执行结果。我在 visual studio 2010 下使用 c#考虑到我的功能是:

class Search{
public list<wrecords> GetrecordsofAAA(string term);
public list<wrecords> GetrecordsofBBB(string term);
public list<wrecords> GetrecordsofCCC(string term);
}

我就是这样调用函数的

list<wrecords> records1 = Search.GetrecordsofAAA(heart);
list<wrecords> records2 = Search.GetrecordsofBBB(heart);
list<wrecords> records3 = Search.GetrecordsofCCC(heart);

这是系列处理。

如果可能的话,我需要同时填写记录 1、记录 2 和记录 3。

最佳答案

看看 Task Parallel Library (TPL)这是在 .NET Framework 4(即 Visual Studio 2010)中引入的。更具体地说,就 TPL 而言,您的问题可以通过 task parallelism 解决。 .

现在,我自己根本不是 TPL 专家,但文档表明你应该能够用 Parallel.Invoke 做你想做的事。 :

using System.Threading.Tasks;


List<wrecords> records1 = null;
List<wrecords> records2 = null;
List<wrecords> records3 = null;
// ^ Initialize these to any default value to prevent a compile-time error.
// The compiler cannot know that below delegates will actually be called,
// so without the initialization you would soon get a "use of unassigned
// variable" error.

Parallel.Invoke(
() => { records1 = Search.GetrecordsofAAA(heart); },
() => { records2 = Search.GetrecordsofBBB(heart); },
() => { records3 = Search.GetrecordsofCCC(heart); }
);

P.S.:一旦您的方法并行执行,您需要确保它们都没有任何可能导致其他方法无法正常运行的副作用。 (例如,如果这些方法读取和修改属于您的 Search 类的相同静态字段,则可能会导致问题。)

关于c# - C# 中的并行处理/并行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com