gpt4 book ai didi

multithreading - Qt对象-我是否过度使用QMutexLocker?

转载 作者:行者123 更新时间:2023-12-03 13:18:04 25 4
gpt4 key购买 nike

我有一个GUI线程和网络线程使用的Qt对象。看起来像:

QString User::Username()
{
QMutexLocker locker(&mutex);
return username;
}

void User::SetUsername(const QString &newUsername)
{
QMutexLocker locker(&mutex);
username = newUsername;
}

QString User::Password()
{
QMutexLocker locker(&mutex);
return password;
}
...

GUI和联网线程都可以使用该对象(例如,在屏幕上显示用户名,并获取要通过网络发送的用户名)。

我担心出现问题,因为 对象中的每个方法都有QMutexLocker行,以使其线程安全。

以这种方式使用QMutexLocker是可以接受的,还是代码结构不良?

最佳答案

您应该分别使用QReadWriteLockQReadLockerQWriteLocker。因此,如果只有读取线程,则不会锁定任何线程。

如果该类的某些字段被非常频繁地更改,并且不更改该类的任何其他状态,则您可能希望为其提供自己的专用锁。

关于multithreading - Qt对象-我是否过度使用QMutexLocker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com