Qt利用线程进行数据更新

Qt利用线程进行数据更新

之前参与的一个项目,遇到了一个很棘手的问题,起初构思是这样的,当数据变化上送了之后,更新本地的model数据源(view/model),然后更新主界面控件QTextEdit的操作日志信息。
正常来说,数据同时变化上送的概率很小,但是我们的测试人员真是鞠躬尽瘁,死而后已,采用所谓的压力测试,模拟出几千个数据同时变化,程序同时处理这么多的数据,并在线程里同时更新主界面QTextEdit控件的信息,不一会,想不到的事情发生了,程序core dump。
用gdb查看堆栈信息,查不到有用的信息,曾一段怀疑本地的List是否线程安全的,这个问题困扰了我很久。我曾经有一段时间天天晚上梦见测试人员跟我说你的程序又core dump了。随后,在跟同事的探讨过程中,是否应该把线程中的变化数据交由主线程去处理,并且更新QTextEdit控件的日志信息,果然可以解决问题。
因此,在多线程的环境下,对于数据的处理需要慎之又慎,避免出现数据处理和预期不一致又或者出现程序core dump的问题。

你可能感兴趣的:(Qt)