标题:Qt/C++中如何使用全局变量
作者:tanyue.esec
日期:2020-08-05 16:32
内容:
有两个主线程在进行业务操作,都会更新操作的状态;
还有一个定时器,在定时查询状态值,以判断是否操作成功以及是否超时。
在Java中,这种场景使用static静态类的静态变量就可以了,但是Qt里,使用static或者extern好像都不行,两个线程获取到的值似乎是独立的。
如何才能实现多个线程之间共享静态变量值的情况呢。
#1 [liulin188 08-05 19:07]
static或者extern好像都不行,两个线程获取到的值似乎是独立的???
楼主,你是在开国际玩笑吗???你是在挑战c++,这已经和qt没关系了
#2 [tanyue.esec 08-05 19:14]
所以才尴尬呀
习惯了Java的static,C++已经荒废十几年了,static extern这些概念都忘光了
#3 [圣域天子 08-05 22:22]
去掉 static
c语言中在多个 .c 中定义的静态变量就是独立的
C基础没学好啊
#4 [levon 08-06 09:52]
这确实是c++的事;和qt没关系;
一个线程参数声明中加上extern;
另外一个线程include 之后即可共享访问;
不需要加上static 修饰;
#5 [tanyue.esec 08-06 11:18]
我在一个cpp文件中,定义了一个 intMATCH_LOCK
在另外两个类的.h文件中,声明了externintMATCH_LOCK
在这两个类的.cpp文件中,使用了MATCH_LOCK,
其中一个对这个变量进行了操作,cout输出的内容看确实是改过来了,从1变成了0,
但是在另一个线程(继承自QThread)的run函数中,每隔100ms输出一遍MATCH_LOCK,始终都是1,没有改变过,这点让我很诧异。