Название: Как лучше спроектировать при работе с потоками Отправлено: vebmaster от Февраль 02, 2017, 12:36 Здравствуйте.
Делаю программу, которая будет работать с mysql в многопоточном режиме, потоков может быть много и 5 и 10 и 100. В каждом потоке будет обращение на чтение/запись к базе. + обращение будет из других объектов классов. Сейчас имеется отдельный класс "mySql" (в нём устанавливается соединение с базой и прописаны все функции с запросами), экземпляр которого создаётся в рабочем классе, объект которого и помещается в поток. Но так же требуется работать с базой в других классах. Не знаю как правильно спроектировать программу для работы с базой. Правильно ли я сделал или нет? Или лучше использовать 1 соединение (static QSqlDatabase db) на всю программу или это всё мелочи? Название: Re: Как лучше спроектировать при работе с потоками Отправлено: vebmaster от Февраль 02, 2017, 15:52 ответ на мой вопрос описан в http://www.prog.org.ru/topic_29975_0.html
всё правильно сделал Название: Re: Как лучше спроектировать при работе с потоками Отправлено: vebmaster от Февраль 06, 2017, 14:37 И всё таки переделал на работу с одним соединением.
Т.к. QSqlDatabase уже синглтон, то достаточно заменить Код: db = QSqlDatabase::addDatabase("QMYSQL"); Код: if (QSqlDatabase::contains(QSqlDatabase::defaultConnection)) а в заголовочном файле даже не нужен static Код: QSqlDatabase db; Название: Re: Как лучше спроектировать при работе с пот Отправлено: vebmaster от Февраль 09, 2017, 13:34 для тех кто наткнулся на данный топик.
Инициализацию QSqlDatabase объекта делаем один раз в конструкторе. Если планируется несколько соединений из разных потоков, для каждого потока всё такие лучше создавать отдельное именованное соединение. Соединяться с базой надо прям перед запросом (exec()) и после запроса закрывать соединение. |