从子对象中获取父Mutex

时间:2015-06-24 23:22:45

标签: multithreading c++11 mutex composition

#include <iostream>
#include <mutex>

using namespace std;

class A;
class B {
public:
  B(A *_parent = nullptr) {
    parent = _parent;
  }
  A *parent;
};

class A {
public:
  std::mutex m;
  B *b;
  A() {
    b = new B(this);
  }
};

int main() {
  A a_obj;
  B *b = new B(&a_obj);
  //b->parent->m.lock();
  return 0;
}

我相信上面的组合对象按预期运行,我一直在使用类似的设计(我的A创建B并将它们添加到数据结构中.B的构造是对其父级的引用。)

当我尝试在A和B之间添加线程安全消息传递时,只要B尝试在A中使用线程安全容器,程序就会崩溃。

上面的代码重现了这个问题。为什么B不能获得A的互斥量?

0 个答案:

没有答案