假设我有一个N个元素的向量,但是这个向量的n个元素都有有意义的数据.一个更新程序线程更新第n个或第n + 1个元素(然后设置n = n + 1),还检查n是否太接近N并在必要时调用vector :: resize(N + M).更新后,线程调用多个子线程来读取第n个数据并进行一些计算.
保证子线程永远不会更改或删除数据(实际上没有数据被删除),updater在完成更新后会调用它们.
到目前为止还没有出现任何问题,但是我想问一下,如果从前一个更新中留下一些子工作线程,在将向量重新分配给更大的内存块时是否会出现问题.
或者在这样的多线程情况下使用向量是否安全,因为它不是线程安全的?
编辑:由于只有当updater调用vector :: resize(N + M,0)时才进行插入,我的问题是否有任何可能的解决方案?由于STL向量的巨大性能,我不愿意用可锁定的向量替换它,或者在这种情况下是否有任何高性能,已知和无锁向量?