RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Тест, чтобы видеть, ориентирована ли библиотека на многопоточное исполнение

int sqlite3_threadsafe(void);

sqlite3_threadsafe() возвращает ноль если и только если SQLite был собран с кодом mutexing, опущенным из-за выбора времени компиляции SQLITE_THREADSAFE = 0.

SQLite может быть собран с или без mutexes. Когда макрос SQLITE_THREADSAFE препроцессора C равняется 1 или 2, mutexes позволены, а SQLite ориентирован на многопоточное исполнение. Когда макрос SQLITE_THREADSAFE = 0, mutexes опущены. Без mutexes небезопасно использовать SQLite одновременно больше, чем от одного потока.

Предоставление возможности mutexes подвергается измеримой потере производительности. Таким образом, если скорость имеет предельное значение, имеет смысл отключать mutexes. Но для максимальной безопасности, должен быть позволен mutexes. Поведение по умолчанию: включены mutexes.

Этот интерфейс может использоваться, чтобы удостовериться, что версия SQLite была собрана с желаемым значением макроса SQLITE_THREADSAFE.

Этот интерфейс сообщает только о значении флага времени компиляции SQLITE_THREADSAFE. Если SQLite собран с SQLITE_THREADSAFE=1 или =2, тогда mutexes позволены по умолчанию, но могут быть полностью или частично отключены, используя запрос sqlite3_config() с параметрами SQLITE_CONFIG_SINGLETHREAD , SQLITE_CONFIG_MULTITHREAD или SQLITE_CONFIG_SERIALIZED. Возвращаемое значение sqlite3_threadsafe() показывает только значение времени компиляции, но не любые изменения во время выполнения, сделанные sqlite3_config(). Другими словами, возвращаемое значение sqlite3_threadsafe() неизменно вызовами sqlite3_config().

См. здесь для подробностей.