I've a multi-user supporting server
which is based on qxmpp
library written in Qt
and exdended by inheriting QXmppServerExtension
. So, my question is: 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?
Since, all the extensions that work via database use it respectively.
Database connection in Singletone
119 Views Asked by elgolondrino At
1
There are 1 best solutions below
Related Questions in C++
- ASP.MVC Castle Nlog Count does not reset
- Castle Windsor registering components that match the same services
- Resolving Interface with generic type constraint with Castle Windsor
- Passing Additional Parameters in Windsor castle
- Use a registered component in the Castle container to supply a dependency for another component
- Which Namespace holds Component.For in Castle Windsor?
- Castle Windsor & Command Pattern
- Resolving generics with Castle Windsor in WCF
- Using same parameter value in a dependency with Windsor
- Abstracting away any configuration using IConfigurationStore and IWindsorInstaller
Related Questions in QT
- ASP.MVC Castle Nlog Count does not reset
- Castle Windsor registering components that match the same services
- Resolving Interface with generic type constraint with Castle Windsor
- Passing Additional Parameters in Windsor castle
- Use a registered component in the Castle container to supply a dependency for another component
- Which Namespace holds Component.For in Castle Windsor?
- Castle Windsor & Command Pattern
- Resolving generics with Castle Windsor in WCF
- Using same parameter value in a dependency with Windsor
- Abstracting away any configuration using IConfigurationStore and IWindsorInstaller
Related Questions in QTSQL
- ASP.MVC Castle Nlog Count does not reset
- Castle Windsor registering components that match the same services
- Resolving Interface with generic type constraint with Castle Windsor
- Passing Additional Parameters in Windsor castle
- Use a registered component in the Castle container to supply a dependency for another component
- Which Namespace holds Component.For in Castle Windsor?
- Castle Windsor & Command Pattern
- Resolving generics with Castle Windsor in WCF
- Using same parameter value in a dependency with Windsor
- Abstracting away any configuration using IConfigurationStore and IWindsorInstaller
Related Questions in QTCORE
- ASP.MVC Castle Nlog Count does not reset
- Castle Windsor registering components that match the same services
- Resolving Interface with generic type constraint with Castle Windsor
- Passing Additional Parameters in Windsor castle
- Use a registered component in the Castle container to supply a dependency for another component
- Which Namespace holds Component.For in Castle Windsor?
- Castle Windsor & Command Pattern
- Resolving generics with Castle Windsor in WCF
- Using same parameter value in a dependency with Windsor
- Abstracting away any configuration using IConfigurationStore and IWindsorInstaller
Related Questions in QXMPP
- ASP.MVC Castle Nlog Count does not reset
- Castle Windsor registering components that match the same services
- Resolving Interface with generic type constraint with Castle Windsor
- Passing Additional Parameters in Windsor castle
- Use a registered component in the Castle container to supply a dependency for another component
- Which Namespace holds Component.For in Castle Windsor?
- Castle Windsor & Command Pattern
- Resolving generics with Castle Windsor in WCF
- Using same parameter value in a dependency with Windsor
- Abstracting away any configuration using IConfigurationStore and IWindsorInstaller
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can read more about singletons in general why they are considered bad in many cases:
What is so bad about Singletons?
I would personally avoid them in your without the context more. The only reason you bought up so far for singletons rather than passing references or that kind around, you would spare some memory for the server service.
Based on the discussion, it is always better to make sure you have some benchmark in place when the complexity difference is not obvious. In your special case, with additional 216K memory for about 1000 clients, you would get about 250 MB additional memory usage.
I am rounding this number up a bit just in case. This is in no way comparable to the capacity of your server which seems to be about 16 GB. If you have other memory hungry services, those would probably be a more offending place to look into optimization.
That being said, if you wish to go for singletons, you could implement that on top of the Q_GLOBAL_STATIC or Q_GLOBAL_STATIC_WITH_ARGS macros in Qt. Note that this was also public in Qt 4, although undocumented. As far as I know, it did not have proper thread-safety in Qt 4 though which was significantly improved in Qt 5.