Spec-Zone.ru › SQLite

Инициализация библиотеки SQLite

int sqlite3_initialize(void);
int sqlite3_shutdown(void);
int sqlite3_os_init(void);
int sqlite3_os_end(void);

Процедура sqlite3_initialize() инициализирует библиотеку SQLite. Процедура sqlite3_shutdown() освобождает ресурсы, выделенные функцией sqlite3_initialize(). Эти функции предназначены для поддержки инициализации и завершения процессов на встраиваемых системах. Приложения, использующие SQLite на рабочих станциях, обычно не нуждаются в вызове этих процедур.

Вызов sqlite3_initialize() считается «эффективным», если это первый вызов sqlite3_initialize() в течение жизненного цикла процесса или если это первый вызов sqlite3_initialize() после вызова sqlite3_shutdown(). Только эффективный вызов sqlite3_initialize() выполняет инициализацию. Все остальные вызовы — это безопасные пустые операции.

Вызов sqlite3_shutdown() считается «эффективным», если это первый вызов sqlite3_shutdown() после последнего sqlite3_initialize(). Только эффективный вызов sqlite3_shutdown() выполняет завершение. Все остальные допустимые вызовы sqlite3_shutdown() — это безопасные пустые операции.

Интерфейс sqlite3_initialize() потокобезопасен, но sqlite3_shutdown() — нет. Интерфейс sqlite3_shutdown() должен вызываться только из одного потока. Все открытые соединения с базой данных должны быть закрыты, а все остальные ресурсы SQLite должны быть освобождены до вызова sqlite3_shutdown().

Среди прочего, sqlite3_initialize() вызовет sqlite3_os_init(). Аналогично, sqlite3_shutdown() вызовет sqlite3_os_end().

Процедура sqlite3_initialize() возвращает SQLITE_OK при успехе. Если по какой-либо причине sqlite3_initialize() не может инициализировать библиотеку (например, не может выделить необходимый ресурс, такой как мьютекс), она возвращает код ошибки, отличный от SQLITE_OK.

Процедура sqlite3_initialize() вызывается внутри многих других интерфейсов SQLite, поэтому обычно приложение не должно вызывать sqlite3_initialize() напрямую. Например, sqlite3_open() вызывает sqlite3_initialize(), поэтому библиотека SQLite будет автоматически инициализирована при вызове sqlite3_open(), если она ещё не была инициализирована. Однако, если SQLite скомпилирован с опцией компиляции SQLITE_OMIT_AUTOINIT, автоматические вызовы sqlite3_initialize() пропускаются, и приложение должно вызвать sqlite3_initialize() напрямую перед использованием любого другого интерфейса SQLite. Для максимальной переносимости рекомендуется, чтобы приложения всегда вызывали sqlite3_initialize() напрямую перед использованием любого другого интерфейса SQLite. Будущие версии SQLite могут потребовать этого. Другими словами, поведение, наблюдаемое при компиляции SQLite с SQLITE_OMIT_AUTOINIT, может стать стандартным в будущих версиях SQLite.

Процедура sqlite3_os_init() выполняет операционную систему специфичную инициализацию библиотеки SQLite. Процедура sqlite3_os_end() отменяет действие sqlite3_os_init(). Типичные задачи, выполняемые этими процедурами, включают выделение или освобождение статических ресурсов, инициализацию глобальных переменных, настройку модуля sqlite3_vfs по умолчанию или настройку конфигурации с помощью sqlite3_config().

Приложение никогда не должно вызывать sqlite3_os_init() или sqlite3_os_end() напрямую. Приложение должно вызывать только sqlite3_initialize() и sqlite3_shutdown(). Интерфейс sqlite3_os_init() вызывается автоматически sqlite3_initialize(), а sqlite3_os_end() — sqlite3_shutdown(). Соответствующие реализации sqlite3_os_init() и sqlite3_os_end() встроены в SQLite при компиляции для Unix, Windows или OS/2. При компиляции для других платформ (используя опцию компиляции SQLITE_OS_OTHER=1) приложение должно предоставить подходящую реализацию sqlite3_os_init() и sqlite3_os_end(). Реализация sqlite3_os_init() или sqlite3_os_end(), предоставленная приложением, должна возвращать SQLITE_OK при успехе и другой код ошибки при неудаче.

См. также списки объектов, констант и функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/initialize.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API