Проверка потокобезопасности библиотеки
int sqlite3_threadsafe(void);
Функция sqlite3_threadsafe() возвращает ноль только в том случае, если SQLite был скомпилирован без кода блокировки взаимного исключения из-за того, что опция компиляции SQLITE_THREADSAFE была установлена в 0.
SQLite может быть скомпилирован с или без мьютексов. Когда препроцессорная макрос SQLITE_THREADSAFE имеет значение 1 или 2, мьютексы включены, и SQLite является потокобезопасным. Когда макрос SQLITE_THREADSAFE имеет значение 0, мьютексы отключены. Без мьютексов использование SQLite из нескольких потоков небезопасно.
Включение мьютексов приводит к измеримой потере производительности. Поэтому, если скорость имеет первостепенное значение, имеет смысл отключить мьютексы. Но для максимальной безопасности мьютексы должны быть включены. По умолчанию мьютексы включены.
Это интерфейс, который приложение может использовать, чтобы убедиться, что используемая версия SQLite была скомпилирована с нужным значением макроса SQLITE_THREADSAFE.
Этот интерфейс сообщает только о значении мьютексов на этапе компиляции флага SQLITE_THREADSAFE. Если SQLite скомпилирован с SQLITE_THREADSAFE=1 или =2, то мьютексы включены по умолчанию, но могут быть полностью или частично отключены с помощью вызова sqlite3_config() с глаголами SQLITE_CONFIG_SINGLETHREAD, SQLITE_CONFIG_MULTITHREAD или SQLITE_CONFIG_SERIALIZED. Возвращаемое значение функции sqlite3_threadsafe() отображает только значение потоковой безопасности на этапе компиляции, а не любые изменения этого значения во время выполнения, сделанные sqlite3_config(). Другими словами, возвращаемое значение sqlite3_threadsafe() не изменяется вызовами sqlite3_config().
Дополнительную информацию см. в документации по режиму работы с потоками.
См. также списки Объектов, Констант и Функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/threadsafe.html