gpt4 book ai didi

c# - 运行任意数量的函数,每个函数都在自己的线程上

转载 作者:太空狗 更新时间:2023-10-30 00:18:46 27 4
gpt4 key购买 nike

在并行运行的对象集合上执行相同功能的最有效方法是什么?我知道我可以在一个循环中执行 new Thread(() => MyFunc(myParam)).Start(),但是有更好的方法吗?这似乎是一种非常丑陋的做法。

最佳答案

[...] is there a better way? This seems like a very ugly way of doing it.

是的,这是一种非常丑陋且低效的方式。每个线程都会消耗大量资源,但您的计算机只能同时执行 N 个线程,其中 N 是您计算机上的 CPU 核心数。因此,您可以在优化线程数量以适应 CPU 核心数量的库之上构建,而不是使用像线程这样的低级原语。

如果你有一组对象,我建议:

LINQ 代码:

var result = source.Select(item => ...).ToList();

并行 LINQ 代码:

var result = source.AsParallel().Select(item => ...).ToList();

对于每个循环:

foreach (var item in source)
Process(item);

每个循环并行:

Parallel.ForEach(
source,
item => Process(item);
);

For循环:

for (var i = 0; i < list.Count; i += 1)
list[i] = Process(list[i]);

并行for循环:

Parallel.For(
0,
list.Count,
i => {
list[i] = Process(list[i]);
}
);

关于c# - 运行任意数量的函数,每个函数都在自己的线程上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551087/

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