gpt4 book ai didi

c# - C#中的基本多线程问题

转载 作者:行者123 更新时间:2023-11-30 15:09:44 24 4
gpt4 key购买 nike

我是多线程的新手,我正在努力并行化我应用程序中的一个区域。我已经阅读了该网站上的许多帖子,但对于解决我的问题的最佳方法仍然感到困惑:

[1] 在 .NET 3.5 中,是 ThreadPool程序利用机器中的多核的唯一方法?即是否可以使用 new Thread() 在不同的内核上生成线程? ?

[2] 我的情况:我有 List<Calculation>其中包含大约 80 个项目,目前按顺序处理。因此,鉴于我使用的是 .NET 3.5,并且根据我所阅读的内容,ThreadPool由于线程数量众多,这可能是我最好的多线程选择,但是:

  • 计算之间有很多依赖关系。目前,列表的排序方式是在开始时执行所有必需的计算。

这就是工作项的依赖关系(细节并不重要,只是想说明依赖关系的复杂性):

alt text

  • 计算时间有很大不同,一个计算对象可能只涉及检索一个值,其他计算对象将涉及嵌套循环中的大量工作......等

我如何确定主要 Calculations 的优先级有 10 多个其他工作项目取决于它?最有效的信号发送方式是什么?

谢谢。

编辑:我应该提到 List<Calculation>保持不变。然而,计算 80+ 次计算被调用了 x 百万次。每次更新迭代器时,都会在每个 Calculation 上调用 Calculate()在列表中。

最佳答案

[1]:是的,可以使用 new Thread() 在不同的内核上生成线程,尽管使用线程池可能会更好。此处讨论了差异:

Thread vs ThreadPool

关于c# - C#中的基本多线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099641/

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