社区
进程/线程/DLL
帖子详情
dll中多线程cpu使用率过低
lxgwd
2008-10-13 02:58:57
请教个问题,我写了一个多线程的图像配准程序,使用的双核处理器我用的是多线程的编程, 运行时 cpu可以达到100%,现在我把这个程序以dll文件嵌入大一个大程序中,但是程序运行到这里时 cpu的使用率 不足 30%,请问是为什么, 在我的多线程程序中,因为程序需要我不断的开线程和关线程,是不是我这种操作引起的。。。第一次发帖,希望知道的高手能帮帮忙.
...全文
549
26
打赏
收藏
dll中多线程cpu使用率过低
请教个问题,我写了一个多线程的图像配准程序,使用的双核处理器我用的是多线程的编程, 运行时 cpu可以达到100%,现在我把这个程序以dll文件嵌入大一个大程序中,但是程序运行到这里时 cpu的使用率 不足 30%,请问是为什么, 在我的多线程程序中,因为程序需要我不断的开线程和关线程,是不是我这种操作引起的。。。第一次发帖,希望知道的高手能帮帮忙.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lxgwd
2008-10-17
打赏
举报
回复
恩 给各位分吧
野男孩
2008-10-15
打赏
举报
回复
说得不太清楚。建议可能的话贴代码出来看看~
cppwin
2008-10-15
打赏
举报
回复
先想办法定位具体语句吧,
每次注释掉一半的语句,然后检测,二分法,
直到找到关键语句,问题就比较容易解决了.
lxgwd
2008-10-15
打赏
举报
回复
回楼上的: 是啊 因为计算量较大,所以才用双线程的 在exe中的我的程序几乎就是100%
然后,今天做个一个试验,就是在线程里写了一个while(1)的循环,发现cpu的使用率就上去了100%
而且我还用了一个纯数学计算的循环,计算量较大,我发现cpu使用率是一个锯齿状 100%-30%,所以所以我就怀疑是因为我在线程中计算量较小,计算时间大概为150ms每次 ,但是我每次都需要要申请一次线程来计算,所以这样拖慢了。
但是有点也不明白了 为什么exe中 和dll同样的程序, 结果却不同
看文章看到一个这样的说法: 不知道大家知道不。。
那么如何提高程序的性能?如果是和msvcrt.dll动态链接的,保证这个dll是1999年2月以后,并且安装的service pack的版本是5或更高。如果是静态链接的,保证链接程序的版本号是6或更高,可以用quickview.exe程序检查这个版本号。要改变所要运行的程序的堆函数的选取,在命令行下键入以下命令:
set __MSVCRT_HEAP_SELECT=__GLOBAL_HEAP_SELECTED,1
WinEggDrop
2008-10-15
打赏
举报
回复
过低?难道楼主想CPU使用率达到100%?
lxgwd
2008-10-14
打赏
举报
回复
谢谢大家帮忙了 下午准备在仿真查查问题。 如果做出来就把答案贴上,做不出来就准备结贴了
dch4890164
2008-10-14
打赏
举报
回复
[Quote=引用 13 楼 scq2099yt 的回复:]
代码在exe中和在dll中是没有差别的,有可能exe程序做了一些特殊的控制,例如设置进程只能在一个处理器上运行。
[/Quote]
头次听说这个问题,不知道什么原因,感觉这个说法是最有可能的
scq2099yt
2008-10-14
打赏
举报
回复
代码在exe中和在dll中是没有差别的,有可能exe程序做了一些特殊的控制,例如设置进程只能在一个处理器上运行。
lxgwd
2008-10-14
打赏
举报
回复
好 谢谢大家 在等一天就结贴了 到时 散分 谢谢了
阿呆_
2008-10-14
打赏
举报
回复
还有一个可能,你的dllmain是怎么处理DLL_THREAD_ATTACH/DLL_THREAD_DETACH的? 你每个创建/删除的线程都会调用dllmain的
deryker
2008-10-14
打赏
举报
回复
[Quote=引用 19 楼 lxgwd 的回复:]
回楼上的 是 在exe里面我可以运行到 100% 但是dll 只有不到30% 2线程的时候 而且dll中虽然运行时间长但是也可以得到正确的结果和exe的结果一样 太颓了 最后了出现这样的问题,本来都准备交项目了
[/Quote]
这个问题影响很大吗?程序对线程的执行效率这么高啊。没有接触过,向你学习。
cnzdgs
2008-10-14
打赏
举报
回复
你在EXE和DLL中执行的代码都是相同的吧?
你可以这样试一下,自己另做一个EXE程序来加载这个DLL,如果可以达到100%就说明问题出在EXE程序上。
lxgwd
2008-10-14
打赏
举报
回复
回楼上的 是 在exe里面我可以运行到 100% 但是dll 只有不到30% 2线程的时候 而且dll中虽然运行时间长但是也可以得到正确的结果和exe的结果一样 太颓了 最后了出现这样的问题,本来都准备交项目了
cnzdgs
2008-10-14
打赏
举报
回复
[Quote=引用 16 楼 lxgwd 的回复:]
唉 刚才查出来了问题的所在,我用的两个线程,在线程的计算中 dll 和exe所花 的时间没有区别
但是 在WaitForMultipleObjects(CpuNumbers,h,TRUE,INFINITE);后 ,dll的运算时间增加了 800毫秒左右,而且无论是申请单线程和双线程的情况均如此。。CpuNumbers=1或CpuNumbers=2.
[/Quote]
不是很清楚你的意思,你在DLL和EXE中不都是执行WaitForMultipleObjects等待吗?
如果是双核分别运行你的线程,在只剩最后一个线程的时候,另一个处理器就空闲了,所以CPU不会一直100%。
phisherr
2008-10-14
打赏
举报
回复
极端怀疑是物理内存过小造成的
lxgwd
2008-10-14
打赏
举报
回复
唉 刚才查出来了问题的所在,我用的两个线程,在线程的计算中 dll 和exe所花 的时间没有区别
但是 在WaitForMultipleObjects(CpuNumbers,h,TRUE,INFINITE);后 ,dll的运算时间增加了 800毫秒左右,而且无论是申请单线程和双线程的情况均如此。。CpuNumbers=1或CpuNumbers=2.
jameshooo
2008-10-13
打赏
举报
回复
exe使用的是单核模式,没有针对多核进行特别优化 --- 仅仅是猜测
yjgx007
2008-10-13
打赏
举报
回复
你是不是在主进程中创建线程,然后用WaitForMultipleObjects?
这会阻塞主进程的消息处理
用MsgWaitForMultipleObjects
cppwin
2008-10-13
打赏
举报
回复
怀疑问题可能是出在消息处理上,
你的dll是否与主程序频繁通过sendmessage通信?
zhoujianhei
2008-10-13
打赏
举报
回复
当内存不足,系统动用虚拟内存的时候,CPU利用率会降低至10%以下。
加载更多回复(6)
多线程
导致
CPU
使用率
百分百原因
在编写一个控制台应用程序时,在使用
多线程
以及硬件厂家的
dll
文件时,认为
dll
文件里的方法自带一个超时时间,就没有再线程
中
进行sleep进行休息或其他
中
断操作,导致程序运行时
CPU
使用率
达到百分之百,在添加上sleep进行休息后,
CPU
使用率
未超过15%。 可能调用第三方
dll
方法时,内置的超时时间被
CPU
进行忽视,认为程序始终在进行死循环操作,导致
CPU
使用率
爆满,这是我个人的想法,有问题请大
详解python
多线程
无法增加
cpu
使用率
原文地址:http://my.oschina.net/u/240562/blog/136651 GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题。运行下面这段 python 程序,
CPU
占用率是多少? 请勿在工作
中
模仿,危险:) def dead_loop(): ?
使用WPF动态显示
CPU
使用率
使用WPF动态显示
CPU
使用率
开源框架 admin9个月前 (07-14)1337浏览 基于WPF的开源图表控件有很多,大多数都是静态图表,如果需要绘制
CPU
使用率
这样的动态数据就显得力不从心,微软开源的DynamicDataDisplay控件弥补了这个不足,为了做个备忘,我用它来实时绘制
CPU
使用率
曲线,当然,这个控件也可以绘制动态线图、气泡图和热力图,具体可参阅官网示例代...
如何在Windows系统
中
获取单个进程的
CPU
使用率
?
CPU
使用率
和内存
使用率
是衡量系统性能的两个关键指标。
CPU
使用率
显示了处理器的工作负载,它表明
CPU
在特定时间段内执行任务所花费的时间比例。内存
使用率
则指示了计算机的随机存取存储器(RAM)的使用情况,反映了系统用于存储运行
中
程序和数据的内存空间的占用率。psutilWMI,即Windows Management Instrumentation,是Windows操作系统
中
的一个重要管理框架。它为获取操作系统、硬件、应用程序和服务的管理信息提供了标准化的方法。
租用的服务器
CPU
使用率
高的原因分析与解决办法
我们租用的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现
CPU
使用率
达到80%以上。这是怎么回事情呢? 遇到病毒了吗?硬件有问题?还是系统设置有问题呢?宵云本文
中
将从硬件,系统进程,应用软件和病毒***四个方面来介绍
CPU
资源
使用率
为什么会达到那么高,以帮助大家排除服务器
CPU
使用率
高的种种疑惑。 一、硬件因素 以下分别从
CPU
温度,
CPU
超线程,硬件配置,硬件驱动和待机方面分析。 情况1、
CPU
温度过高 如果
CPU
风扇散热不好,会导致
CPU
温度太高.
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章