gpt4 book ai didi

c# - 为什么两个进程比 2 个线程有优势?

转载 作者:太空狗 更新时间:2023-10-29 19:48:08 24 4
gpt4 key购买 nike

我有一个基于 MSMQ 的定位应用程序,我可以在该应用程序中接收来自外业单位的位置更新,并对其进行处理并放入数据库中。

更新过程在数据库之外没有依赖关系,所以我的应用程序可以配置可变数量的线程。由于我希望该过程在失败时仍然健壮,所以我想处理尽可能多的消息,但不要更多(这样如果系统失败,我可以从我离开的地方继续)。

我的应用程序运行正常,但我发现如果我增加用于处理消息的线程数,我的平均消息数将处于一个级别(我使用性能计数器来衡量这一点),并且我让系统利用 50% 的可用 CPU 时间(我有一个带有 4 个物理内核和 8 个逻辑内核的 Core i7 820QM),但是如果我不增加线程,而是启动相同数量的进程,我确实得到了使用 100% 的 CPU 时间,并处理更多的平均事件。

会不会是锁争用问题?与 Windows 7 处理超线程处理器的方式有关吗?我希望了解问题的本质,非常感谢任何指点。

注意:我在这个项目中使用了 MSMQ、Rx 和 Entity Framework。

最佳答案

如果没有看到您的代码,很难给出准确的答案,但无论如何我都会添加一些可能性

首先争用会产生巨大的影响,您使用的是什么锁定类型?

其次,.Net 框架可能会产生影响,因为 .Net 2.0 和更早的内核对象被用作锁定机制。这些需要内核转换以更改影响性能的状态。

关于c# - 为什么两个进程比 2 个线程有优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810663/

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