背景:
在QThread的run函数中执行耗时工作。
示例代码
void wakeThread::run()
{
m_waitcondition.wait(); #1
if(getThreadState()==STOP) #2
{
break;
}
for(int i=0;i<1000;++) #3
{
QThread::sleep(1);
....
....
}
}
问题:
多个线程(A,B)用同一个m_waitcondition 来唤醒。
当该线程(A)正在执行 #3处的代码时,其他线程(B)由通过 m_waitconditiong.wakeall(),再次唤醒线程A,
(1)这时还会马上执行#3处的代码吗?
(2)还是等#3处的代码执行后在执行第二次唤醒,再次执行#3
答案:
通过做了个示例表明