Я пытаюсь использовать 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.Я думаю, что это проблема инициализации / выделения
Заранее спасибо.