Singleton中的数据库连接

时间:2014-01-01 06:14:02

标签: c++ qt qtsql qtcore qxmpp

我有一个支持server的多用户,该用户基于qxmpp编写的Qt库,并通过继承QXmppServerExtension来扩展。所以,我的问题是:Considering multi-user support in my server, whether it's safe or not to use a Singletone class for database connection and holding a connection for QSqlQuery?因为,所有通过数据库工作的扩展分别使用它。

1 个答案:

答案 0 :(得分:0)

你可以阅读更多关于单身人士的信息,为什么在很多情况下他们被认为是坏事:

What is so bad about Singletons?

如果没有上下文,我会亲自避免使用它们。你到目前为止购买单身人士的唯一原因,而不是传递参考或类似的,你会为服务器服务留出一些记忆。

根据讨论,当复杂性差异不明显时,最好确保你有一些基准。在您的特殊情况下,为大约1000个客户端增加216K内存,您将获得大约250 MB的额外内存使用量。

为了以防万一,我将这个数字四舍五入。这与您的服务器的容量无法相比,似乎大约为16 GB。如果您有其他需要大量内存的服务,那么这些服务可能会成为一个更有用的地方,可以进行优化。

话虽这么说,如果你想换单身,你可以在Qt的Q_GLOBAL_STATICQ_GLOBAL_STATIC_WITH_ARGS宏之上实现它。请注意,这在Qt 4中也是公开的,尽管没有记录。据我所知,它在Qt 4中没有适当的线程安全性,但在Qt 5中得到了显着改善。