【发布时间】:2016-09-06 13:16:12
【问题描述】:
我正在接近多线程世界。 我有一个关于 QString 和多线程应用程序的问题。
我的主要应用类是:
MyGeneralClass{
public:
std::vector< QString > hpg_lines;
.
.
.
};
我的多线程类如下所示:
class MyTread:public QThread{
private:
QString qstr_;
MyGeneralClass *gen_;
.
.
};
每个线程在其 qstr 对象中写入一些内容(大量字符串),并在线程结束时将其复制到主类的向量 hpg_lines 上。 我可以这样做还是我可能会发生一些数据丢失? 谢谢你的帮助
【问题讨论】:
-
不确定您是否落入了那个陷阱,但请注意
QThread是线程控制器。它不是线程。因此,最好将线程修改的任何变量以及要在线程中运行的任何代码放入单独的类中。还要注意,如果你想要一个运行线程的 Qt 事件循环(这样你就可以将信号连接到线程中的插槽),你通常不应该继承QThread,因为没有理由(以及许多不必要的方法你可以拧如果你这样做,事情就会发生)。
标签: c++ multithreading qt