【发布时间】:2011-04-16 21:35:36
【问题描述】:
销毁单例对象的最佳方法是什么?
案例 A:单线程环境
案例B:多线程环境
示例 sn-ps(如果有)将非常有帮助。
[编辑] 我没有具体的用例,我只是想了解如果必须使用单例,如何正确销毁它。据我了解,从 cmets 来看,可能有两种情况:
1. 在没有代码访问时销毁单例。(使用智能指针,它会使用 RAII 自行销毁对象)
2. 退出程序时销毁一个单例,无论是否有代码保留在单例上。
(通过在 main 退出之前删除实例来显式销毁)
【问题讨论】:
-
最好的方法通常是完全没有任何单例;那么你不必销毁任何单例:-)
-
删除源文件和头文件应该可以解决问题。然后想出一个不使用单例的设计。
-
关于为什么“单身人士是邪恶的”的背景,阅读lostechies.com/blogs/scottdensmore/archive/2009/08/13/…及其前身,从那里链接。
-
是的,单例很难使用,如果你不小心就会导致问题。但让我们回答提出的问题。如果我们想讨论应该做的单例的优点,那是自己的具体问题。
-
@jalf, Martin - 感谢您的评论。我同意,最好摆脱单例,但在某些情况下一个不能(一些已经存在的遗留代码等),所以 q 是如果必须使用所有单例,如何确保你安全地销毁它们。
标签: c++ multithreading design-patterns oop