QAbstractItemModel子类线程是否安全?

时间:2017-02-16 17:04:40

标签: c++ multithreading qt

你好,来自SO!

今天我一直在质疑自己试图实施的内容。

谈到这一点,我正在尝试使用Qt的某种终端代码,它将用于显示来自应用程序不同部分的消息。

现在我实现了一个模型类(派生自QAbstractTableModel),它代表了这些消息行的QList,并打算将它们映射到终端窗口中的小部件(DataWidgetMapper被考虑 )。

然后它打了我,如果我的应用程序的不同部分试图同时添加新消息怎么办? 它甚至可能发生吗? 是否实施BeginInsertRow与保护这些东西的安全有关?

长话短说我很困惑。我自己找不到太多的情报。所以我开始怀疑我是否以正确的方式做到这一点。

我在Qt世界中有点新人。

提前致谢:)

1 个答案:

答案 0 :(得分:2)

由于您在QAbstractItemModel之上实施自己的模型,因此确定它是否是线程安全的取决于您。您必须设计自己的内部数据模型,因此更改和访问模型中的数据的方法是您自己的。您可以完全控制其内容,以便添加所需的任何线程锁定机制,以确保不同的线程无法同时更新和访问数据。提供数据访问的所有QAbstractItemModel方法最终都会调用派生方法。