它为同步线程提供了一个条件变量。
加入头文件:
#include <QWaitCondition>
函数:
virtual
mutex必须由调用线程进行初锁定 。注意调用wait的话,会自动调用unlock解锁之前锁住的资源,不然会造成死锁。
线程1等待线程2来改变共享资源,从而达到一定的条件然后发出信号,使得线程1从wait中的阻塞状态中被唤醒。
但是线程2想改变资源,却无法办到,因为线程1调用lock之后就在wait中blocking,了但是没有及时的unlock,那么这就
构成了死锁的条件。所以说wait函数除了使调用线程切换到内核态之外,还自动unlock(&mutex)
- 这将会唤醒所有等待QWaitCondition的线程。这些线程被唤醒的顺序依赖于操组系统的调度策略,并且不能被控制或预知。
void
这将会唤醒所有等待QWaitCondition的线程中的一个线程。这个被唤醒的线程依赖于操组系统的调度策略,并且不能被控制或预知。
例子:
#include<QtCore/QCoreApplication>
#include <QMutex>
#include <QWaitCondition>
#include <QThread>
QWaitCondition mycond;
class mythread:public QThread
{
public:
private:
};
mythread::mythread(QObject *parent)
: QThread(parent)
{
}
mythread::~mythread()
{
}
void mythread::run()
{
}
int main(int argc, char *argv[])
{
}