【发布时间】:2009-09-11 09:22:16
【问题描述】:
我有一个在不同时间调用子线程函数的主线程,但我不确定在 Qt 中这是否是正确的方法。下面的代码有什么问题并寻找更好的替代方法
当主线程释放锁子时,主线程会无限运行。
#include <QtCore/QCoreApplication>
#include <QSemaphore>
#include <QThread>
QSemaphore sem(0);
class Background : public QThread
{
protected:
void run()
{
for(;;)
{
sem.acquire(1);
qDebug("Child function ran");
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Background child;
child.start();
qDebug("Main running");
qDebug("release a lock");
sem.release(1);
qDebug("Do somework in main");
//call child
sem.release(1);
sem.release(1);
return a.exec();
}
【问题讨论】: