gpt4 book ai didi

C# 并行更新字典的条目?

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:10 26 4
gpt4 key购买 nike

不知道这是否可能,但与其遍历字典并根据某些条件修改条目,我想知道是否可以并行执行此操作?

例如,而不是:

Dictionary<int, byte> dict = new Dictionary<int, byte>();
for (int i = 0; i < dict.Count; i++)
{
dict[i] = 255;
}

我想要这样的东西:

Dictionary<int, byte> dict = new Dictionary<int, byte>();
dict.Parallel(x=>x, <condition>, <function_to_apply>);

我意识到,为了构建用于修改字典的索引,我们需要迭代并构建一个整数列表......但我想知道是否有一些偷偷摸摸的方法可以做到这一点,既更快又比第一个例子更简洁。

我当然可以遍历 dict对于每个条目,产生一个新线程并运行一些代码,返回值并构建一个新的、更新的字典,但这似乎真的有点过分了。

我很好奇的原因是 <function_to_apply>可能很贵。

最佳答案

I could of course iterate through the dict and for each entry, spawn a new thread and run some code, return the value and build a new, updated dictionary, but that seems really overkill.

假设你在重建字典时不需要它,那就没那么多了:

var newDictionary = dictionary.AsParallel()
.Select(kvp =>
/* do whatever here as long as
it works with the local kvp variable
and not the original dict */
new
{
Key = kvp.Key,
NewValue = function_to_apply(kvp.Key, kvp.Value)
})
.ToDictionary(x => x.Key,
x => x.NewValue);

然后锁定您需要的任何同步对象并交换新旧词典。

关于C# 并行更新字典的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49877444/

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