簡體   English   中英

在多線程C ++程序中使用std :: vector時崩潰的應用程序

[英]crashing app when using std::vector in multithreaded C++ program

簡化:我正在為realbasic編寫插件。 我有兩個具有各自線程的插件。 一切都很好,直到我開始使用std :: vector為止。 我在兩個插件中都有vector <>變量,並且沒有使用矢量來使用相同的數據或在線程或其他任何對象之間共享數據。 我的模型如下所示:

thread_1{
    vector<> variable_1;
    foreach{
         variable_1.push_back(something);
    }
}


thread_2{
    vector<> variable_2;
    foreach{
         variable_2.push_back(something);
    }
}

如果我不將向量聲明為靜態,則大多數情況下程序會崩潰。 但是,即使我聲明變量為靜態,並使用諸如排序或復制之類的某些算法,崩潰也會再次出現。 似乎對vector的操作正在使用某些不是多線程安全的抽象類。 還是我做錯了什么? 謝謝。

我正在使用Windows 7 x64,Visual Studio 2008 Pro,發行版win32上的編譯。

AFAIK,分配器不是線程安全的。 您應該以線程安全的方式分配向量(保留)或使用線程安全的分配器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM