gpt4 book ai didi

c++ - QMutexLocker 和 QMutex 哪个更好用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:23 27 4
gpt4 key购买 nike

我想知道关于 Mutex 的哪种用法更好。我想到的两种用法是:

1)

   Qlist getList()
{
QMutexLocker locker(&m_mutex);
return m_list;

}

for ( int i =0 ;i < getList.count ; i++)
{
obj = getList.at(i)
//some work
// on obj
}

2)

    Qlist getList()
{
return m_list;

}

{
QMutexLocker locker(&m_mutex);
for ( int i =0 ;i < getList.count ; i++)
{
obj = getList.at(i)<br>
//some work
// on obj
}
}

简而言之,是在任何使用列表的地方保护它更好,还是在返回列表的 getlist 函数中放置一个互斥量更好?

最佳答案

我不明白你为什么要在 getter 中锁定互斥量。您所做的一切都是在制作 QList 浅拷贝时阻止其他 protected 部分运行。

QList 上执行操作时需要锁定互斥锁,这些操作需要与对 QList 的任何其他访问隔离开来。您在循环中对 QList 所做的工作的性质以及其他线程如何同时与它交互将决定您是否需要锁定它。

如果在循环期间没有其他线程可以更改元素的数量,那么只在循环体内围绕您对每个元素所做的工作进行锁定可能是安全的(这仍然取决于其他线程可能对内容执行的操作) QList),否则在循环体外部锁定。仅锁定 setter/getter 不会有任何效果。

关于c++ - QMutexLocker 和 QMutex 哪个更好用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8090706/

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