0

私は 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 です。初期化/割り当ての問題だと思います

前もって感謝します。

4

0 に答える 0