在多线程C++程序中使用std::vector时导致应用程序崩溃
crashing app when using std::vector in multithreaded C++ program
简化:我正在为realbasic编写插件。我有两个插件,它们有自己的线程。在我开始使用std::vector之前,一切都很好。我有向量<>两个插件中的变量和我并没有使用向量来使用相同的数据或在线程之间共享数据或其他任何东西。我的模型是这样的:
thread_1{
vector<> variable_1;
foreach{
variable_1.push_back(something);
}
}
thread_2{
vector<> variable_2;
foreach{
variable_2.push_back(something);
}
}
如果我不声明向量是静态的,程序大多数时候都会崩溃。但是,即使我将变量声明为静态,并使用排序或复制等算法,崩溃也会再次出现。向量上的操作似乎使用了一些抽象类,这些抽象类不是多线程安全的。还是我做错了什么?非常感谢。
我使用的是windows7x64,visualstudio2008pro,编译版本为win32。
AFAIK,分配器不是线程安全的。您应该以线程安全的方式分配vector(reserve(,或者使用线程安全的分配器。
相关文章:
- 为什么vector::eras似乎会导致崩溃?
- C++如果调用 vector,矢量分割错误会导致崩溃
- 并发写入 std::vector 到不同的索引会导致崩溃
- 基于范围的loop和std :: vector.push_back()崩溃了程序
- 将对象指针的push_back崩溃到std :: vector中
- C++vector.push_back()使m程序崩溃
- 根据条件将元素从 std::vector 复制到 std::set 但它崩溃了
- Vector::迭代器在与开始比较时崩溃
- 为什么当我删除 std::vector 的成员时我的程序崩溃
- 当我包含'<algorithm>'和'<vector>'时崩溃RubyInline。
- 从 std::vector c++ 调用 std::function 时崩溃
- 当我使用vector::erase时它崩溃的原因是什么
- 为什么 std::vector 会导致崩溃,而 std::map 不会?
- 将数据流式传输到 std::vector<double> 崩溃
- 与"glibc detected: vector double free or corruption (out)"崩溃
- Visual Studio 在包含 vector 时崩溃
- 类中的C++std::vector,函数在foreach中返回值和大小增长时崩溃
- std::vector push_back() 使程序崩溃
- 为什么对std::vector::back()的调用会使我的程序崩溃
- 在多线程C++程序中使用std::vector时导致应用程序崩溃