FreeSource: SQLite/sqlite3BusyHandler

sqlite3_busy_handler

Этот вызов позволяет указать пользовательскую функцию, которая будет вызываться в случае, если файл баз данных был заблокирован другим процессом или потоком. Если указатель на обработчик равен NULL, то sqlite3_exec() вернет SQLITE_BUSY немедленно при доступе к заблокированной таблице. Если обработчик указан, sqlite3_exec() вызовет его с двумя аргументами. Второй аргумент – предыдущее количество вызовов обработчика, при доступе к заблокированному ресурсу. Если обработчик вернул ноль, то sqlite3_exec() вернет SQLITE_BUSY, в противном случае, sqlite3_exec() будет пытаться открыть таблицу в цикле.

Обработчик по умолчанию – NULL.

Sqlite реентерабельна, и в обработчике возможно выполнять запросы. (Не совсем понятно, зачем это может пригодиться, но в теории это возможно) Обработчик не должен закрывать файл базы данных. Закрытие базы из обработчика вызовет удаление структур вышестоящего запроса и может привести к аварийному завершению.

Ссылок на эту страницу нет