当前位置: 代码迷 >> VC >> :四核多线程,为什么CPU占用最多只有25%
  详细解决方案

:四核多线程,为什么CPU占用最多只有25%

热度:314   发布时间:2016-05-05 00:09:50.0
高分求教:四核多线程,为什么CPU占用最多只有25%
VS2005, C++开发,四核i7笔记本, WinXP SP3

程序一共3个线程:用户UI、消息接收和数据计算。在数据计算线程明显满负荷已经不能实时处理(显示延迟很明显)时,CPU占用率依然不超过25%。此时消息接收线程也有相当的处理负荷,如能多核应该超过25%才对。

消息接收和数据计算线程使用了信号量进行了同步,但用的很少且处理时间很短。

问题如下:
1. 单进程下的程序是否再多的线程也只能用一个CPU?如果能使用多核的话,该如何设置?
2. 信号量同步是否对CPU使用有影响?

欢迎答复,有答必给分。多谢了。


C++ 多核 并行

------解决方案--------------------
引用:
此时消息接收线程也有相当的处理负荷,如能多核应该超过25%才对

消息接收线程再“有相当的处理负荷”,跟你的所谓“数据计算线程”相比也是九牛一毛。

你得数据计算应该多线程处理。这就好比如说核心路线不优化,净把时间浪费在根本就很松弛的路线上,有什么意义呢?
------解决方案--------------------
呵呵,其实一楼已回答了。

你的3个线程,只有数据计算线程可能达到100%, 
其他的线程,例如“消息接收线程”,不出意外的话,一般也就1%。
所以在4核中,你只能用满1核,25%。

总之,要想提高CPU利用,
你要想办法把数据计算分成多线程处理。
------解决方案--------------------
25%说明只有一个线程被调度。

应该是你过分加锁所致。或者你的负载不在CPU而在网络、IO或者其它地方。
  相关解决方案