C ++ external boost :: unordered_map проблема многопоточности - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь использовать boost :: unordered_map в качестве глобальной переменной, где над ней работают два потока (с относительным мьютексом).Хотя простая версия с целым числом работает, версия 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.Я думаю, что это проблема инициализации / выделения

Заранее спасибо.

...