无法在tbb :: concurrent_unordered_map中定义互斥锁

时间:2013-04-09 17:22:08

标签: c++ compiler-errors mutex tbb

我知道多个线程可以同时访问concurrent_unordered_map。在每个地图条目中,我想要一个互斥锁。

请看一下这段简单的代码:

struct MyStruct {
    int a;
    int b;
    boost::mutex mtx;
};
// typedef boost::unordered_map<int, MyStruct> StructMap;
typedef tbb::concurrent_unordered_map<int, MyStruct> StructMap;
int main()
{
    StructMap struct_map;
    struct_map[0].a = 9;
    MyStruct &struct_ref = struct_map[0];
}

无法使用tbb :: concurrent_unordered_map进行编译,但可以使用boost :: unordered_map进行编译。

此外,我发现当我在MyStruct中注释掉字段(boost :: mutex mtx)时,它可以使用tbb :: concurrent_unordered_map进行编译。

有谁知道为什么?

PS。它无法编译,因为编译器正在寻找boost :: mutex的复制构造函数,它不存在。我真的不知道为什么它需要一个构造函数,我只是引用它...

谢谢, 崔

0 个答案:

没有答案