我有一个多用户支持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?
所有通过数据库工作的扩展都分别使用它。
通常,您可以阅读有关单例的更多信息,为什么在很多情况下它们被认为是不良的:
我个人会在没有上下文的情况下避免使用它们。到目前为止,您为单身人士购买而不是传递引用或类似的东西的唯一原因是,您将为服务器服务保留一些内存。
根据讨论,最好在复杂性差异不明显的情况下确保有适当的基准。在您的特殊情况下,如果为大约1000个客户端增加了216K内存,您将获得大约250 MB的额外内存使用量。
我将这个数字四舍五入,以防万一。这绝对无法与您的服务器容量(大约16 GB)相提并论。如果您还有其他需要大量内存的服务,那么可能更不宜考虑进行优化。
话虽如此,如果您想单身,可以在Qt中的Q_GLOBAL_STATIC或Q_GLOBAL_STATIC_WITH_ARGS宏之上实现该功能。请注意,这在Qt 4中也是公开的,尽管没有记录。据我所知,它在Qt 4中没有适当的线程安全性,尽管在Qt 5中得到了显着改善。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句