我正在尝试将 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。我认为这是一个初始化/分配问题
提前致谢。