В настоящее время я пытаюсь реализовать многопоточный интерфейс подключения к базе данных для личного использования. Это осуществляется с помощью 3-х классовИмеет ли много потоков в приложении счетчик продуктивным?
DatabaseManager
База данных Connexion instancier инстанцирования нового потока для каждого соединенияDatabase
объекта наследования от QThread, предназначенный для запуска в главном потоке и подвергая интерфейс, чтобы сделать вещи объект работникаDatabaseWorker
объект рабочий, который запускает цикл обработки событий в рабочем потоке управляющий одно соединение с базой данных, ожидает запросов и доставки результатов с помощью Qt: QueuedConnections (сигнал/слотов)- Когда соединение больше не используется (явный вызов к методу
close()
), связанный цикл события останавливается и поток удаляется. Цель состоит в том, чтобы сохранить создание и удаление потоков как минимум.
Эта архитектура имеет большой успех до сих пор с ограниченным количеством потоков (обычно не более 10 соединений). Моя основная проблема заключается в том, что я не знаю, как это будет выглядеть, если у меня есть 100+ соединений, которые означают более 100 потоков для одного приложения, которые приносят мой главный вопрос
Имеет ли много потока в приложении счетчик продуктивным? что произойдет, если я открою соединения 50/100/500/1000 одновременно? если я это сделаю, операции с базой данных ввода-вывода займут много времени (это не было разработано для этого в первую очередь), но сколько из этого отставания вызвано количеством потоков?
Это зависит от оборудования, на котором работает приложение. Если вы действительно можете запускать потоки на разных ядрах, тогда вы получите выигрыш, пока планировщик не задушит каждое отдельное ядро. Это с обычным предостережением о том, что задания потоков действительно независимы. Здесь нет определенного ответа, может рассказать только профилирование. – StoryTeller
Dunno - спросите свою базу данных :) 100 или даже 1000, нити не являются сами по себе, особая проблема. Характеристики вашей БД могут быть ... –
Аппаратное обеспечение Intel I5 2.4GHz с 6 аппаратными потоками и открытие большого количества подключений к базам данных не является проблемой, так как я могу открыть 100 подключений к 100 различным базам данных на разных серверах.На данный момент я беспокоюсь только о своем локальном приложении – Nyashes