Russian Qt Forum
Мая 22, 2025, 17:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSQLite, доступ из разных процессов  (Прочитано 3127 раз)
Fess
Гость
« : Мая 22, 2011, 16:21 »

Судя по тому, что говорит ассистент реализация драйвера для SQLite потокобезопасна - все последующие потоки, пожелавшие обратиться за чем-либо к базе будут ждать до
QSQLITE_BUSY_TIMEOUT. Но что, если другое приложение через этот же Qt драйвер попытается открыть базу? Получит ли оно исключение, или будет ждать таймаута?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Мая 22, 2011, 17:59 »

Будет ждать, если не установлено PRAGMA locking_mode = EXCLUSIVE
Записан
Fess
Гость
« Ответ #2 : Мая 22, 2011, 18:36 »

Но эта опция влияет только на время наложения блокировки - блокировка при выполнении запроса / блокировка на все время соединения..
Меня интересует как будет вести себя другой процесс при доступе к заблокированной базе данных через Qt Sqlite вне зависимости он того сколько эта блокировка будет действовать.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Мая 22, 2011, 19:37 »

Но эта опция влияет только на время наложения блокировки - блокировка при выполнении запроса / блокировка на все время соединения...
Нет, это опция влияет на метод блокирования.
При NORMAL блокирование производится внутренними механизмами БД.
При EXCLUSIVE производится блокировка файла БД на уровне файловой системы, поэтому второй процесс так залоченную БД не сможет открыть даже для чтения.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 2.408 секунд. Запросов: 23.