Russian Qt Forum
Ноябрь 24, 2024, 07:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSQLite, доступ из разных процессов  (Прочитано 3060 раз)
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]   Вверх
  Печать  
 
Перейти в:  


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