原始代码:
SingleClass* SingleClass::GetInstance()
{
mutex.lock()
if (_SingleClass == nullptr)
{
_SingleClass = new _SingleClass();
}
mutex.unlock();
return _SingleClass;;
}
std:::lock_guard<std::mutex> Locker(参数(locker))>
在上面代码中 因为代码只需要new一次_SingleClass()就可以了所以每次都使用锁的话 会造成资源的浪费
所以将代码改成下面的样子
SingleClass* SingleClass::GetInstance()
{
if (_SingleClass == nullptr)
{
mutex.lock()
if (_SingleClass == nullptr)
_SingleClass = new _SingleClass();
}
mutex.unlock();
return _SingleClass;;
}
这样的话 在创建完成实例之后 将会直接return _SingleClass; 而不会进一步加锁
这样的话 在创建完成实例之后 将会直接return _SingleClass; 而不会进一步加锁