gpt4 book ai didi

C# 创建与处理器一样多的类实例

转载 作者:行者123 更新时间:2023-11-30 20:14:02 24 4
gpt4 key购买 nike

我有一个 GUI C# 应用程序,它有一个启动/停止按钮。

最初,此 GUI 是创建类的单个实例,该实例查询数据库并在有结果时执行某些操作,并一次从数据库中获取单个“任务”。

然后我被要求尝试利用某些 8 核系统上的所有计算能力。使用我认为的处理器数量,我可以创建该数量的类实例并运行它们,并且非常接近于使用相当数量的计算能力。

Environment.ProccessorCount;

使用这个值,在 GUI 形式中,我一直在尝试通过 ProccessorCount 循环次数并启动一个调用类中“doWork”类型方法的新线程。然后休眠 1 秒(以确保初始查询通过),然后继续循环的下一部分。

然而,我一直对此有疑问,因为它似乎要等到循环完成才能开始查询,导致某种冲突(从 MySQL 数据库获取相同的值)。

在主窗体中,一旦它启动了“workers”,它就会将按钮文本更改为 STOP,如果再次按下按钮,它应该对每个“worker”执行一个“stopWork”方法。

我试图完成的事情有意义吗?有没有更好的方法来做到这一点(不涉及重组 worker 类(Class))?

最佳答案

重构您的设计,让一个线程在后台运行,检查您的数据库是否有工作要做。

当它找到工作要做时,为每个工作项生成一个新线程。

不要忘记对关键的有限资源使用同步工具,例如信号量和互斥量。微调同步值得您花时间。

您还可以试验工作线程的最大数量 - 我猜它会比您当前的处理器数量多一些。

关于C# 创建与处理器一样多的类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018714/

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