[英]multi-thread CPU usage in C#
我的程序使用预定数量的线程,每个线程都执行独立工作。 我使用i7-2600 CPU,但我关闭了超线程模块,因此它在4个内核上运行4个线程。 当我使用1个线程运行程序时,CPU使用率为25%,这是完全使用1个线程的完美,但是当我运行4或3个线程时,我只获得60%的CPU,为什么?
就像我之前提到的那样,线程是完全独立的(没有锁和没有争论)当我用1个线程运行程序4次时,我获得了100%的CPU使用率(即,当每个进程的4个进程为1个线程时,我得到了正确的CPU使用率)
有任何想法吗?
更多信息:
并发可视化工具将在这里为您提供帮助。 您将看到每个线程何时执行,如果所有线程都没有执行,您可以确切地看到特定线程正在等待的原因。 如果生成大量垃圾,GC可能会阻止线程导致线性缩放。 但你只能通过真正的调查找到答案。
我在使用.NET Framework v2.0时遇到了同样的问题,然后我将项目目标框架更改为v4.0,它以100%CPU负载启动
编辑:您只需使用即可查看每个线程的CPU使用情况
要么
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.