gpt4 book ai didi

c++ - std::vector push_back 在并行 for 循环中使用时失败

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

我有一个代码如下(简化代码):

for( int i = 0; i < input.rows; i++ )
{
if(IsGoodMatch(input[I])
{
Newvalues newValues;
newValues.x1=input.x1;
newValues.x2=input.x1*2;
output.push_back( newValues);
}
}

此代码运行良好,但如果我想使用 omp parallel for 使其并行,我会在 output.push_back 上收到错误,并且似乎在调整 vector 大小期间,内存已损坏。

问题是什么,我该如何解决?

如何确保在任何时候只有一个线程将新项目插入 vector?

最佳答案

简单的答案是 std::vector::push_back 不是线程安全的。

为了安全地并行执行此操作,您需要同步以确保不会同时从多个线程调用 push_back

C++11 中的同步可以通过使用 std::mutex 轻松实现。

关于c++ - std::vector push_back 在并行 for 循环中使用时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19268217/

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