想要在某种条件下,阻塞线程一定时间,比如100ms。但是wait(int ms)在被自己调用时,只是返回不能实际生效,进入到L02和L03;如果在GUI线程中调用,在L10处,阻塞,但是被阻塞线程仍然不停循环执行。
不知道那位有过类似经验,给指定一下!谢谢
以下为wait()的代码
。。。。。。。
Q_D(QThread);
QMutexLocker locker(&d->mutex);
01 if (d->id == GetCurrentThreadId()) {
02 qWarning("QThread::wait: Thread tried to wait on itself");
03 return false;
04 }
05 if (d->finished || !d->running)
06 return true;
07 ++d->waiters;
08 locker.mutex()->unlock();
09 bool ret = false;
10 switch (WaitForSingleObject(d->handle, time)) {
11 case WAIT_OBJECT_0:
12 ret = true;
13 break;
14 case WAIT_FAILED:
15 qErrnoWarning("QThread::wait: Thread wait failure");
16 break;
17 case WAIT_ABANDONED:
18 case WAIT_TIMEOUT:
19 default:
20 break;
21 }
22 locker.mutex()->lock();
23 --d->waiters;
。。。。。。。