QT环境下,<POSIX多线程>全局变量共享问题
Posted Qwells
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT环境下,<POSIX多线程>全局变量共享问题相关的知识,希望对你有一定的参考价值。
开始的技术路线是:
首先有两个主线程:
1,gui线程
2,等待客户端socket连接用的,listen线程
(当有客户端连接时,即creat一个新的线程2用来跟客户端通信,再来新的客户端,继续creat新的work线程3用于通信,以此类推,目前最多可以creat5个线程,即可以同时跟5台客户端通信,设置了监听的socket服务器最多监听5个队列。线程2继续listen)
出现的问题是:
用来通信的work线程3,收到一个来自客户端的xml文件,然后解析文件,并将其数据放在一个全局的静态struct数组里。数据正常,线程2和线程3均可以看到已经更新的数据值。但是,
当gui线程去访问时,发现数据并没有更新到其线程,在gui线程下改变该全局变量的数值,也并没有更新到线程2和3,不知何解?
一博主,有如此解释:
不过,问题并没有清晰化。
想到的解决方案暂时有两种:
1,不在work线程里面解析数据,直接在gui线程里面解析数据。
2,采用线程私有数据
(此处出现过,小插曲:QT的变量查看器,在调试时不太稳定,更新过后的值在窗口中查看,并没有得到及时更新,需要通过程序判定验证!)
以上是关于QT环境下,<POSIX多线程>全局变量共享问题的主要内容,如果未能解决你的问题,请参考以下文章