【问题标题】:Which Singleton library in BOOST do you choose?你选择 BOOST 中的哪个 Singleton 库?
【发布时间】:2010-03-11 15:33:25
【问题描述】:

Google 结果显示 boost 中有超过 1 个单例模板/基类,您建议使用哪一个?

【问题讨论】:

  • 单身人士是邪恶的。它们只是政治正确伪装下的全局变量!
  • @gf:我想我现在已经在至少十几个不同的问题中提出了这一点。 ;) 这里(stackoverflow.com/questions/1020312/…)是另一个。根据他的博客,显然我也将 GMan 转换为我的观点:(blackninjagames.com/?p=24),但现在找不到它所基于的线程。 :) 所以是的,虽然它可能无法回答 OP 的问题,但我会说“不要在 boost 中使用任何单例类”。 :)
  • @gf @jalf:就是这个:stackoverflow.com/questions/2080233/…
  • @jalf:也许你可以在一篇可以参考的博文中详细说明一下? :) @GMan:啊,谢谢。
  • ..当心,臭臭的单身人士,福音传道者来了! :)) [我这里没有具体的人,只是开玩笑]

标签: c++ boost singleton


【解决方案1】:

您不应该在 boost 中使用单例,它们仅用于内部目的(请参阅单独 libes 的“详细”文件夹)。这就是为什么你还没有在 boost 网站上公开 Singleton 库的原因。

单例类的实现非常简单,但有许多变体在特定情况下很有用,因此您应该使用符合您认为单例应有的行为的东西。

现在,还有其他提供单例的库,最通用的是 Loki。但它可能会让你大吃一惊;)


更新:现在有一个名为 Singularity 的提议库,旨在提供非全局单例(可以选择使其成为全局),强制您拥有明确的对象创建和销毁点。

查看审核请求:http://boost.2283326.n4.nabble.com/Review-Request-Singularity-tt3759486.html

一些 boost 开发者似乎考虑使用它而不是一些 hack,但 C++11 使得单例类比以前更容易,所以这将取决于审查。

【讨论】:

    【解决方案2】:

    我的 boost 版本具有以下 singleton.hpp 标头:

    C:\boost_1_38_0\boost\pool\detail\singleton.hpp
    C:\boost_1_38_0\boost\serialization\singleton.hpp
    C:\boost_1_38_0\boost\thread\detail\singleton.hpp
    

    我没有使用过其中的任何一个,但我可能会远离详细目录的那些。

    不管怎样,http://torjo.com/tobias/index.html#boost_utility_singleton.reference.singleton 看起来像是一个可以使用,但它似乎并不是真正的 boost 的一部分(还没有被接受?)。

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多