私は boost::unordered_map をグローバル変数として使用しようとしています.2つのスレッド (相対ミューテックスを使用) が動作します。整数を使用した単純なバージョンは機能しますが、boost::unordered_map バージョンは機能しません。
global.hpp: extern boost::unordered_map my_namespace::_cache;
概して:
boost::unordered_map<std::string, my_namespace::MyStruct> my_namespace::_cache;
int main(int argc, char* argv[])
{
boost thread1 // write the unordered map
boost thread2 // " "
}
スレッド 1 で
#include "global.hpp"
//...
my_namespace::_cache[k].integer_field = 4;
スレッド 2 で
#include "global.hpp"
//...
my_namespace::_cache[k].integer_field--;
最初の呼び出しの後に予想される値は 3 である必要があり、代わりに -1 です。初期化/割り当ての問題だと思います
前もって感謝します。