Qthread - 睡到事件

时间:2016-06-29 15:00:04

标签: c++ multithreading qt qthread

我希望一个线程只要在我的程序中触发信号就会休眠。 我创建了一个Qthread并将我的课程添加到其中

QThread* serialthread = new QThread;
Serial*  serial = new Serial();
serial->moveToThread(serialthread);
connect(serial, SIGNAL(error(QString)), this, SLOT(errorString(QString)));
connect(serialthread, SIGNAL(started()), serial, SLOT(process));
connect(serial, SIGNAL(finished()), serialthread, SLOT(quit()));
connect(serial, SIGNAL(finished()), serial, SLOT(deleteLater()));
connect(serialthread, SIGNAL(finished()), serialthread, SLOT(deleteLater()));
serialthread->start();

我的类的函数serial :: sendRequest()应该由一个信号触发。 另一次我希望线程如此睡眠而不浪费CPU时间。

1 个答案:

答案 0 :(得分:3)

该线程已经处于休眠状态,并且在没有任何工作时不会浪费任何CPU时间。您无需执行任何特殊操作即可获得该行为。这是QThread::run的默认实现的行为:它启动一个事件循环。当事件循环没有要处理的事件时,它会休眠,等待更多事件。