0

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

提前致谢。

4

0 回答 0