gpt4 book ai didi

c++ - QVector 项目是否共享相同的缓存行?

转载 作者:行者123 更新时间:2023-11-30 02:39:12 25 4
gpt4 key购买 nike

假设我有一个 QVector 存储这些元素:{3, 4, 1, 5, 6}。所以如果我从不同的线程读取每个元素,这会导致错误共享吗? (“读取”的意思是这样的:int i = vector[0];//no change involved)

使用相同的“读取”概念,当从不同线程“读取” vector 时, vector 的单个元素是否被视为共享资源?

最佳答案

是的,每个缓存行将有多个元素可用,因为 QVector 将其元素连续存储在内存中(与 std::vector 一样)。

因此可能会发生错误共享,但在现代处理器上,如果缓存行被修改,它只会导致性能下降 - 这在您的示例中没有。

Is a single element of the vector considered a shared-resource when 'reading' it from different threads?

这取决于您所说的“共享资源”是什么意思。如果您指的是标记为共享的缓存行,那么是的,但这只是因为缓存行包含元素,元素本身没有什么特别之处。

如果您实际上指的是 Qt 的隐式共享机制(QVector 使用的),那么没有一个元素不被视为共享资源,因为引用计数发生在容器级别。

关于c++ - QVector 项目是否共享相同的缓存行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021091/

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