在qabstractItemmodel :: data()const中,如何添加一些线程安全数据



在qabstractitemmodel :: data()中,如何添加一些线程安全数据

qabstractItemmodel :: data()是一个'const'函数,因此我不能添加我的范围MUTEX锁定,但是我的数据必须在某个地方更改,因此必须需要一个utex锁,我该如何解决这个问题?

ps:我尝试了连接/发射,但是信号也需要" const"关键字,所以我需要使用tcp套接字??

QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const
{
    QMutexLocker locker(&cacheMutex_);
    auto cacheTime = logCache_.find(key_);
}

来自您的代码段,我相信您是要添加一些同步对象作为派生的类成员。如果So @tas的评论已经是一个答案:同步对象在概念上不被视为您的数据的一部分,因此只需在您的派生类中标记它们:

Mutable qmutex cachemutex _;

数据成员标记为突变的数据仍然可以在const成员函数中进行修改。

阅读有关QMetaObject的更多信息。并始终在主线程中使用UI。尝试使用QMetaObject::invokeMethod(..., Qt::BlockingQueuedConnection),您的方法将在主线程中执行。因此,您不需要静音。谢谢!

相关内容

  • 没有找到相关文章

最新更新