![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
noneim |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 8.6.2010 Пользователь №: 1792 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
На данный момент есть программа, использующая подключение к БД sqlite:
Инициализация:
Далее в разных потоках:
Но недавно прочитал , что оказывается так нельзя делать. Хотя вроде бы тестил и под windows и под Linux, работало без багов. Интересует надежность такого применения, на данных момент демон нормально держит uptime несколько дней, но вдруг возникнут какие-нибудь неожиданные баги? |
|
|
![]() |
FireBlack |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
Недавно споткнулся о грабли многопоточности и QSQLite. Сначала не обратил внимание на документацию и использовал одно подключение QSqlDatabase в нескольких потоках. В результате приложение падало с "unhandled exception" то в qsqlite.dll, то в ntdll.dll. Причем могло упасть как через 10 минут стресс-теста, так и через 2 часа.
Проблему решил с помощью QSqlDatabase::cloneDatabase, выдавая каждому потоку свое подключение к базе. Чтобы избежать ошибки "database is locked" работу с SQL обвернул в мьютекс. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 9.6.2025, 21:17 |