Подключение к базе данных в Singletone

У меня многопользовательская поддержка 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

Решение

Вы можете прочитать больше о синглетах в целом, почему они считаются плохими во многих случаях:

Что такого плохого в синглетонах?

Я бы лично избегал их в твоем случае без контекста. Единственная причина, по которой вы до сих пор покупали синглтоны вместо передачи ссылок или чего-то подобного, вы бы сэкономили немного памяти для службы сервера.

Основываясь на обсуждении, всегда лучше убедиться, что у вас есть какой-то эталонный тест, когда разница в сложности не очевидна. В вашем особом случае, с дополнительной 216 КБ памяти для около 1000 клиентов, вы получите около 250 МБ дополнительной памяти.

Я немного округлю это число на всякий случай. Это никоим образом не сравнимо с емкостью вашего сервера, которая составляет около 16 ГБ. Если у вас есть другие службы, требующие памяти, они, вероятно, будут более обидным местом для поиска оптимизации.

При этом, если вы хотите пойти на одиночные игры, вы можете реализовать это на вершине Q_GLOBAL_STATIC или же Q_GLOBAL_STATIC_WITH_ARGS макросы в Qt. Обратите внимание, что это также было публично в Qt 4, хотя и недокументировано. Насколько я знаю, в Qt 4 он не имел надлежащей безопасности потоков, хотя в Qt 5 он был значительно улучшен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]