VS2005, C++开发,四核i7笔记本, WinXP SP3
程序一共3个线程:用户UI、消息接收和数据计算。在数据计算线程明显满负荷已经不能实时处理(显示延迟很明显)时,CPU占用率依然不超过25%。此时消息接收线程也有相当的处理负荷,如能多核应该超过25%才对。
消息接收和数据计算线程使用了信号量进行了同步,但用的很少且处理时间很短。
问题如下:
1. 单进程下的程序是否再多的线程也只能用一个CPU?如果能使用多核的话,该如何设置?
2. 信号量同步是否对CPU使用有影响?
欢迎答复,有答必给分。多谢了。
C++ 多核 并行
------解决方案--------------------
消息接收线程再“有相当的处理负荷”,跟你的所谓“数据计算线程”相比也是九牛一毛。
你得数据计算应该多线程处理。这就好比如说核心路线不优化,净把时间浪费在根本就很松弛的路线上,有什么意义呢?
------解决方案--------------------
呵呵,其实一楼已回答了。
你的3个线程,只有数据计算线程可能达到100%,
其他的线程,例如“消息接收线程”,不出意外的话,一般也就1%。
所以在4核中,你只能用满1核,25%。
总之,要想提高CPU利用,
你要想办法把数据计算分成多线程处理。
------解决方案--------------------
25%说明只有一个线程被调度。
应该是你过分加锁所致。或者你的负载不在CPU而在网络、IO或者其它地方。