gpt4 book ai didi

c++ - QVector 预分配访问线程安全

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:54 24 4
gpt4 key购买 nike

Qt 容器在被多线程使用时作为只读是安全的。但是写访问呢?我可以调整 QVector 的大小并在不同的线程中使用 operator[] 进行写入吗? QVector 的大小将保持不变,每个线程将写入不同的内存位置(每个线程都有自己的索引),因此不会同时访问相同的内存。 QVector 将是一个全局变量。

最佳答案

Qt 文档将 QVector 的成员函数定义为 reentrant ,这意味着如果每个线程都有不同的 QVector 实例,那么从线程调用它的方法是安全的。这意味着 QVector 不会像您打算使用它的方式那样是线程安全的。

如果你能保证你对 QVector 的写入不会改变它的长度并且不会重叠,你可能会发现你不会有问题。但是,如果您知道要写入 vector 的不同区域,为什么不将 vector 拆分为子 vector 并使用线程处理每个子 vector 呢?这将允许您保证不会遇到与线程相关的麻烦。完成工作后,您可以将 vector 替换为单个实体。

关于c++ - QVector 预分配访问线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25581727/

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