// how to create a global singleton object
const TInt KMarkTlsHandle = 0xC0FFEE;
class CYourClass: public CBase
{
public:
CYourClass(){};
void ConstructL(){};
~CYourClass();
};
CYourClass::~CYourClass()
{
//release TLS
UserSvr::DllFreeTls(KMarkTlsHandle);
}
//how to create a global singleton object
void CMarkEComWrapper::DoCommandCreateSingletonObject()
{
TInt err = KErrNone;
//Get object from STL
CYourClass* iSingletonObject = static_cast<CYourClass*> (UserSvr::DllTls(KMarkTlsHandle));
//if not, create one
if (!iSingletonObject)
{
iSingletonObject = new (ELeave) CYourClass;
CleanupStack::PushL(iSingletonObject);
iSingletonObject->ConstructL();
err = UserSvr::DllSetTls( KMarkTlsHandle, iSingletonObject );
CleanupStack::Pop(iSingletonObject);
}
delete iSingletonObject ;
iSingletonObject = 0;
}
本文介绍了一种在软件开发中创建全局单例对象的方法。通过使用线程局部存储(TLS)来实现跨线程的单例模式,确保了对象的唯一性。在构造和析构函数中对TLS进行了初始化和清理。
181

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



