加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么两个进程优于2个线程?

发布时间:2020-12-15 07:48:30 所属栏目:百科 来源:网络整理
导读:我有一个基于MSMQ的位置应用程序,我从现场的单位接收位置更新,并将它们处理并放入数据库. 更新过程没有DB之外的依赖项,因此我的应用程序可以配置可变数量的线程.因为我希望这个过程在失败的情况下是健壮的,我想尽可能多地处理消息,但不是更多(所以如果系统出
我有一个基于MSMQ的位置应用程序,我从现场的单位接收位置更新,并将它们处理并放入数据库.

更新过程没有DB之外的依赖项,因此我的应用程序可以配置可变数量的线程.因为我希望这个过程在失败的情况下是健壮的,我想尽可能多地处理消息,但不是更多(所以如果系统出现故障,我可以选择离开的地方).

我有正确的应用程序工作,但我已经看到,如果我提高我用来处理消息的线程数,我的平均消息数量是一个级别(我使用性能计数器来衡量这个),我得到了系统比如,利用可用CPU时间的50%(我有一个Core i7 820QM,带有4个物理内核和8个逻辑内核),但如果我不是提高线程,启动相同数量的进程,我会使用100占CPU时间的百分比,并获得更高数量的平均事件处理.

这可能是锁争用问题吗?与Windows 7处理超线程处理器的方式有什么关系?我希望了解问题的本质,任何指针都会非常感激.

注意:我在这个项目中使用MSMQ,Rx和Entity Framework.

解决方法

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

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

其次.Net框架可以对.Net 2.0&早期的内核对象被用作锁定机制.这些必需的内核转换可以改变影响性能的状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读