- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我阅读了很多关于单例的资料。我在考虑单例之间的死引用问题。在 net 上的每个 primer 中,当一个单例在其析构函数中调用另一个单例时会遇到此问题,并且该单例已经被销毁,例如可以从许多其他单例的析构函数中调用 Log 单例。
我无法想象在其他情况下(除了在 dtr 中引用其他单例),死引用会是一个问题。您能否给我一个存在此类问题的真实示例,我该如何解决?
问题是我需要在我们的项目中实现几个单例,它们都相互通信,我很难选择正确的方式。请不要说不要使用单例,因为那不是我的决定。
最佳答案
销毁顺序问题是单例模式的重要组成部分。
Please do not say not to use a singleton, because that's not my decision.
不使用它们是正确的做法 - 鉴于这是不可能的,您将不得不使用一个 hacky 解决方法。以下是一些可能的解决方案,但没有一个是完美的:
weak_ptr
保存对其他单例的引用 - 它们可以相互独立地销毁,您可以在使用之前安全地检查引用的单例是否仍然存在此外,我建议不要在多线程上下文中创建或销毁单例 - 确保在任何新线程之前创建所有单例并且在销毁它们之前已停止除主线程之外的所有线程要容易得多。
关于c++ - 单例死引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509763/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!