gpt4 book ai didi

.net - 你在使用并行扩展吗?

转载 作者:行者123 更新时间:2023-12-03 15:02:22 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




我希望这不是对 stackoverflow 的滥用;最近我在 Parallel Extensions 上看到了一些很棒的问题,这激起了我的兴趣。

我的问题:
您是否使用并行扩展,如果是,如何使用?

我叫 Stephen Toub,在 Microsoft 的并行计算平台团队工作。我们是负责并行扩展的小组。我一直很想了解开发人员如何使用并行扩展(例如 Parallel.For、PLINQ、ConcurrentDictionary 等)、您的积极体验、消极体验、对 future 的功能要求等等在。
如果您愿意分享此类信息,请在此处作为对此问题的回复或通过电子邮件私下发送给我,地址为 stoub at microsoft dot com。 .

我非常期待收到您的来信。

提前致谢!

最佳答案

我正在使用 TPL 进行嵌套 Parallel.ForEach来电。因为我从这些调用中访问字典,所以我必须使用 ConcurrentDictionary .虽然很好,但我有几个问题:

  • ForEach 内部的代表不做太多的工作,所以我没有得到太多的并行性。系统似乎大部分时间都在加入线程。如果有办法弄清楚为什么它没有得到更好的并发性并改进它,那就太好了。
  • ForEach迭代结束ConcurrentDictionary实例,如果我没有添加枚举器缓存,这将导致系统将大部分时间用于字典的枚举器。
  • 我的许多 ConcurrentDictionary实例实际上是集合,但没有 ConcurrentSet所以我必须用 ConcurrentDictionary 来实现我自己的.
  • ConcurrentDictionary不支持对象初始化语法所以我不能说var dict = new ConcurrentDictionary<char, int> { { 'A', 65 } };这也意味着我不能分配 ConcurrentDictionary类成员的文字。
  • 有些地方我必须在 ConcurrentDictionary 中查找一个键。并调用一个昂贵的函数来创建一个值(如果它不存在)。如果有 GetOrAdd 的过载,那就太好了。这需要 addValueFactory这样只有当键不存在时才能计算值。这可以用 .AddOrUpdate(key, addValueFactory, (k, v) => v) 模拟。但这增加了每次查找的额外委托(delegate)调用的开销。
  • 关于.net - 你在使用并行扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960269/

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