• 8694阅读
  • 5回复

Qt多线程程序占用100% CPU资源的问题 [复制链接]

上一主题 下一主题
离线wisconxing
 
只看楼主 倒序阅读 楼主  发表于: 2008-12-18
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
各位,

我在运行C++ GUI Qt 4编程(第二版)第14章中的Threads例子,发现当多线程被启动后,CPU的占用率是100%,是因为Thread::run()程序里的while循环造成的。请问在while循环里加入什么语句能把CPU资源释放出来呢?Thread::run()程序如下:

void Thread::run()
{
    while (!stopped)
        printf("%s",&messageStr);
    std::cerr << qPrintable(messageStr);
    stopped = false;
    std::cerr << std::endl;
}
离线blueliang
只看该作者 1楼 发表于: 2008-12-18




在while语句中加入
msleep(2000);

这个每个循环中间就要等待2000ms了
while执行太快,当然就很占用CPU资源了。
[ 此贴被blueliang在2008-12-19 09:31重新编辑 ]
离线wisconxing
只看该作者 2楼 发表于: 2008-12-19
非常感谢
离线wvins
只看该作者 3楼 发表于: 2008-12-19
......
我想说不建议使用sleep,
不过查了一下QThread居然没有Suspend和Resume方法
......
离线wvins
只看该作者 4楼 发表于: 2008-12-19
Well

使用QMutex挂起线程也不错。
而Sleep只是暂停一定的时间,

两者有区别,
不过sleep简单得多。
离线xdman

只看该作者 5楼 发表于: 2009-01-13
usleep()好用很
快速回复
限100 字节
 
上一个 下一个