C ++ - 在线程之间传递信号到不同类的函数?

时间:2016-09-14 09:36:39

标签: c++ multithreading

基本问题,但一直未能找到解决方案。我需要由DERIVED_TWO选择.notify_one(),我已经在同一个类中测试了代码,它运行正常吗?

#include <mutex>

class BASE
{
public:
    std::mutex(mu);
    std::condition_variable condition;
};

class DERIVED_ONE:public BASE
{
public:
   auto DoStuff()->void
   {
      std::unique_lock<mutex> lock(mu);
      //Do Stuff here...
      lock.unlock();
      condition.notify_one();
   }
};

class DERIVED_TWO:public BASE
{
public:
   auto DoMoreStuff()->void
   {
     std::unique_lock<mutex> lock(mu);
     condition.wait(lock);
     //Do even more stuff...
     lock.unlock();
   }
};

SIDE注意: 我可以使用多态对象在类之间传递消息,尽管这似乎是一个混乱的解决方案

1 个答案:

答案 0 :(得分:2)

除非将其声明为静态,否则类的不同实例将不会共享相同的条件变量对象。我也怀疑你会想要他们。 我将实现一个单独的消息队列类,可以根据需要实例化为通信通道,并在创建时传递给其他类的实例。