qt中的条件变量,在哪里声明

时间:2014-05-05 17:11:13

标签: c++ multithreading qt

我有两个qhread,其中一个线程需要使用条件变量等待另一个线程。我的案例QWaitCondition的示例是here

所以我有一个条件变量QWaitCondition my_condition;。这个变量必须对两个线程都可见。我的问题是:我应该在哪里定义my_condition?我不喜欢使用全局变量。但是,它应该是一个全局变量吗?如果它需要是全局的,我应该把它的定义放在哪里,这样两个线程都可以看到它?

2 个答案:

答案 0 :(得分:1)

你可以在任何地方申报。例如,将它声明为主应用程序QObject的成员变量(例如,如果这是一个GUI应用程序,则为QMainWindow子类),并将指针传递给访问条件变量的线程QObjects的构造函数,可以正常工作

您似乎混淆了线程安全性和可变范围。在您的情况下,线程只是一个需要通过指针访问变量(QWaitCondition)的类。只需将此指针传递给类构造函数并存储即可。

答案 1 :(得分:0)

制作common.h / gaobal.h文件。

globle.h

{{1}}

的main.cpp

{{1}}

这里我有2个线程和waitcondition,queue,mutex对于两个线程都是全局的。