template<typename T>
class Singleton {
public:
static T* instance() {
return _s_instance;
}
protected:
Singleton() {}
virtual ~Singleton() {}
private:
//only declare; forbiden copy and assign
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
static T* _s_instance;
};
template<typename T> T* Singleton<T>::_s_instance = new T;
class GlobalData : public Singleton<GlobalData> {
public:
GlobalData() {
_m_concurrency_sender_num = 0;
}
~GlobalData() {};
void concurrency_sender_incr() {
_m_concurrency_sender_num++;
}
void concurrency_sender_decr() {
_m_concurrency_sender_num--;
}
private:
boost::atomic<int> _m_concurrency_sender_num;
};
使用一个单例模式的模板类,将GlobalData类继承自它,就可以用GlobalData来管理工程中的全局变量。
在使用时,只需要这样调用即可:
GlobalData::instance()->concurrency_sender_incr();
GloablData::instance()->concurrency_sender_decr();
本文介绍了一种使用单例模式和模板类管理全局数据的方法。通过将GlobalData类继承自单例模板,可以有效地控制全局变量的访问和修改,如并发发送者数量的增减。这种方式不仅简化了全局数据的管理,还提高了代码的可维护性和效率。
&spm=1001.2101.3001.5002&articleId=108037058&d=1&t=3&u=76a241510e3941b29d5d2186f060c88a)
558

被折叠的 条评论
为什么被折叠?



