我想创建一个线程安全的单例类。
实现相同(我所知道)的当前方法是在类中使用静态方法返回静态对象,如下所示:
Singleton & Singleton::getInstance()
{
static Singleton instance;
return instance;
}
使用这种方法的问题在于,由于创建的对象是静态的,因此在应用程序退出时会进行清理。理想情况下,我想控制破坏的确切发生时间。
我做了一些挖掘,发现我可以使用静态ptr实例方式并具有单独的清理功能,但为了使其线程安全,我将不得不使用具有显式内存屏障的双重检查锁定。
是否有更简单的理解(我不是专家)的方法来实现同样的目标?