C++中单例GetInstance()使用双重锁提高效率

原始代码:

SingleClass* SingleClass::GetInstance()
{
	mutex.lock()
	if (_SingleClass == nullptr)
	{
		_SingleClass = new _SingleClass();
	}
		mutex.unlock();
		return _SingleClass;;
}

std:::lock_guard 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; 而不会进一步加锁

你可能感兴趣的:(C++中单例GetInstance()使用双重锁提高效率)