如何解决STL 向量和线程安全?
开发过程中遇到STL 向量和线程安全的问题如何解决?下面主要结合日常开发的经验,给出你关于STL 向量和线程安全的解决方法建议,希望对你解决STL 向量和线程安全有所启发或帮助;问题描述
假设我有一个包含 N 个元素的向量,但是这个向量中最多有 n 个元素具有有意义的数据.一个更新线程更新第 n 个或第 n+1 个元素(然后设置 n = n+1),还会检查 n 是否太接近 N 并在必要时调用 vector::resize(N+M).更新后,线程调用多个子线程读取最多第n个数据并做一些计算.
保证子线程永远不会更改或删除数据,(实际上没有数据被删除)并且更新程序在完成更新后立即调用子线程.
目前没有出现任何问题,但是我想问一下,在重新分配vector到更大内存块的过程中,如果上次更新留下了一些子工作线程,是否会出现问题.
或者在这种多线程的情况下使用vector是否安全,因为它不是线程安全的?
由于只有在更新程序调用 vector::resize(N+M,0) 时才会进行插入,所以我的问题有什么可能的解决方案吗?由于 STL 向量的出色性能,我不愿意用可锁定向量替换它,或者在这种情况下是否有任何高性能、已知和无锁向量?
尚未找到解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)