我正在编写一个Qt应用程序,我有一个4小时的循环(在一个独立的线程中)。在这四个小时的循环中,我必须:
目前,我的方法是非常糟糕的,并使一些计算机崩溃。我有大量的代码,但是下面的代码片段基本上显示了问题。CPU达到100%,最终会使计算机崩溃。
void CRelayduinoUserControl::wait(int timeMS)
{
int curTime = loopTimer->elapsed();
while(loopTimer->elapsed() < curTime + timeMS);
}我需要等待一段特定的时间才能继续执行这个程序。在保持所有计时器运行的同时,是否有什么函数只需要等待一段任意的时间呢?
发布于 2012-04-01 05:29:30
如果您想睡QT,请使用QTimer。只需将超时信号从计时器连接到包含您想要执行的代码的时隙,就可以完成每次x次的计时。
发布于 2012-04-02 13:07:06
海事组织,您应该使用信号/插槽机制,尽管在内部等待了一段时间。代码可以是这样的:
#define STATE_1 0x01
#define STATE_2 0x02
#define STATE_3 0x03
.....
QTimer * timer = new QTimer();
connect(timer,SIGNAL(timeout()),SLOT(timerSlot()));
int state = STATE_1 ;
timer->timerSlot()
....
void timerSlot() {
switch(state) {
case STATE_1:
// do stuff with the serial port
state = STATE_2;
timer->start(time_to_wait_in_ms);
break;
case STATE_2:
// do more stuff with the serial port
state = STATE_3;
timer->start(500);
break;
case STATE_3:
// do more stuff
state = STATE_1;
timer->start(1000*60*60*4);
break;
} https://stackoverflow.com/questions/9961876
复制相似问题