赞
踩
在C++中,一些特殊性质的类如何设计
一个类只能创建一个对象的类(singleton)
即只有唯一的实例对象
饿汉模式: 无论是否使用, 程序创建之前(main函数之前)就构造一个唯一的对象
懒汉模式: 第一次使用对象时再创建实例对象
设计方式同饿汉基本相同, 但调用静态成员函数时(需要获取实例对象时)再创建实例对象(new 实例对象)
优点对应着饿汉的缺点
缺点
线程安全问题
static ThreadPool<T> *getIntance(int num = g_thread_num){
// 双重判断, 减少反复的加锁和解锁操作(因为只有第一次调用该方法时才会有线程安全问题, 之后都不会)
// 加多一个判断, 后续再来的线程时, 则不需要再进行加解锁, 只用做一次判断即可(拦截了大量的无用的访问锁的行为->只有第一次访问锁有意义)
if (pool == nullptr){
LockGuard lock(&_smtx);
if (pool == nullptr){
pool = new ThreadPool<T>(num);
}
}
return pool;
}
单例对象的释放问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。