占用CPU问题

hehemouse 2000-03-14 08:41:00
一个程序因为要做大量的I/O操作
会耗费大量的cpu
会使响应菜单很慢
我已经把这些操作放在了Thread里
但是好象还是没用,有什么方法没有?

主线程里的功能是每次只能同时运行3个Thread
是使用 WaitForMultipleObjects,每次检查200ms,
如果没有线程结束,就继续检查,否则就新创建一个Thread
每个Thread都会占用大量CPU
...全文
231 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sniper 2000-03-18
  • 打赏
  • 举报
回复
你用的是PostMessage()还是SendMessage(),用SendMessage()应该不会有这个问题吧。
hehemouse 2000-03-17
  • 打赏
  • 举报
回复
当一个 Thread做完的时候,就让某个进度条StepIt()
这里我用的是向主MainFrame发消息的方法
当Thread个数比较少的时候是正常的,一多就响应很慢了
怎么解决?
(我认为可能是消息队列中的消息太多,系统来不及处理菜单响应)
wzq 2000-03-15
  • 打赏
  • 举报
回复
你是怎么检测200ms的,如果用WaitForMultipleObjects带参数200ms那么其不会占用CPU时间的。
你如果在线程内不停地查询,那当然会占用大量的CPU时间!这时可在循环检测中加入一些Sleep语句。
不要不停地创建线程,在同一线程内循环检查,如果等到事件,就发送消息或把信息放在数据队列中,主线程定时检测。



Tomorrow 2000-03-15
  • 打赏
  • 举报
回复
在线程结束时,给主线程窗体发消息PostMessage,在主窗体中测出线程结束消息时,
作相应的处理
Sniper 2000-03-15
  • 打赏
  • 举报
回复
请检查一下,当你的N个Thread正在进行I/O操作时,你的主程是否被挂起了(你用了WaitFor......,你的主线程就被挂起了),如果我没理解错,你在一个循环里反复调用WaitFor......,这样你的主线程不断被挂起,菜单响应自然很慢。
建议你先用主线程创建一个子线程A,由A完成你所说的检查、创建(I/O子线程)等工作,而让你的主线程正常响应消息,这样应该是有效的。
祝好运!
softdoctor 2000-03-15
  • 打赏
  • 举报
回复
利用消息棒将消息及时传送出去。
lu0 2000-03-14
  • 打赏
  • 举报
回复
既然IO不能避免而且会耗费大量的CPU时间片,那么只能更新硬件了.
还快速的IO设备或快速CPU.:)
fupf88 2000-03-14
  • 打赏
  • 举报
回复
别用WaitForMultipleObjects,否则等的时候主线程也不会相应,
最好在线程结束时发个消息给主线程,使之启动一个新线程
ZPoint 2000-03-14
  • 打赏
  • 举报
回复
第一种方法是利用交互式线程,而不要用工作线程。
或者响应可继承函数OnIdle();
通过性能监控工具nmon的学习,清楚的了解Linux服务器资源CPU、磁盘、内存、网络、进程之间的关联,了解nmon监控结果的字段的含义以及影响,更重要的是通过熟悉监控结果中字段数据的由来,理清性能测试的分析思路,学会性能测试的分析方法。 课程内容:第一章:课程简介课程介绍课程大纲第二章:nmon介绍nmon简介nmon下载nmon安装nmon屏幕统计-交互模式nmon数据统计-数据收集模式nmon进程关闭nmon分析工具nmon数据文件解析第三章:nmon数据分析SYS_SUMM【系统资源汇总】AAA【服务器基本信息】BBBP【Linux执行的命令和结果】CPU_ALL【所有CPU数据的概述】CPU_SUMM【每个CPU的整体占用情况】CPU001【CPU001的每个时间点占用情况】DISK_SUMM【磁盘的吞吐量和IOPS】DISKBSIZE【磁盘块信息】DISKBUSY【磁盘的繁忙情况】DISKREAD【磁盘的读取操作速率】DISKXFER【磁盘的I/0传输速率】JFSFILE【JFS文件空间使用百分比】MEM【内存】VM【虚拟内存】NET【网络数据传输速率】NETPACKET【网络数据包】PROC【进程】TOP【PID进程相关的CPU/内存等】 课程提供的下载资料:包含通过nmon收集的Linux服务器资源信息ecs-lc_220715_1019.nmon文件,大家在没有Linux服务器的情况下,可以通过对这个文件进行nmon数据解析和数据分析的学习。 

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧