
#include
#include
class IObserver :public XThread{
public:
//观察者接收数据函数
virtual void update(XData data){}
//主体函数 添加观察者(线程安全)
void addObs(IObserver *obs);
//通知所有观察者(线程安全)
void notify(XData data);
protected:
std::vector vObs;
std::mutex mux;//线程互斥锁
};
cpp文件
#include "IObserver.h"
void IObserver::addObs(IObserver *obs) {
if (!obs) return;
mux.lock();
vObs.push_back(obs);
mux.unlock();
}
void IObserver::notify(XData data) {
mux.lock();
for (int i = 0; i < vObs.size(); ++i) {
vObs[i]->update(data);
}
mux.unlock();
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)