基本问题,但一直未能找到解决方案。我需要由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注意: 我可以使用多态对象在类之间传递消息,尽管这似乎是一个混乱的解决方案
答案 0 :(得分:2)
除非将其声明为静态,否则类的不同实例将不会共享相同的条件变量对象。我也怀疑你会想要他们。 我将实现一个单独的消息队列类,可以根据需要实例化为通信通道,并在创建时传递给其他类的实例。