我有一个支持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?
因为,所有通过数据库工作的扩展分别使用它。
答案 0 :(得分:0)
你可以阅读更多关于单身人士的信息,为什么在很多情况下他们被认为是坏事:
What is so bad about Singletons?
如果没有上下文,我会亲自避免使用它们。你到目前为止购买单身人士的唯一原因,而不是传递参考或类似的,你会为服务器服务留出一些记忆。
根据讨论,当复杂性差异不明显时,最好确保你有一些基准。在您的特殊情况下,为大约1000个客户端增加216K内存,您将获得大约250 MB的额外内存使用量。
为了以防万一,我将这个数字四舍五入。这与您的服务器的容量无法相比,似乎大约为16 GB。如果您有其他需要大量内存的服务,那么这些服务可能会成为一个更有用的地方,可以进行优化。
话虽这么说,如果你想换单身,你可以在Qt的Q_GLOBAL_STATIC或Q_GLOBAL_STATIC_WITH_ARGS宏之上实现它。请注意,这在Qt 4中也是公开的,尽管没有记录。据我所知,它在Qt 4中没有适当的线程安全性,但在Qt 5中得到了显着改善。