SQLite C 接口
测试库是否是线程安全的
int sqlite3_threadsafe(void);
当且仅当 SQLite 编译时由于 SQLITE_THREADSAFE编译时选项被设置为 0 而省略了互斥代码,sqlite3_threadsafe() 函数返回零。
SQLite 可以使用或不使用互斥锁进行编译。当SQLITE_THREADSAFE C 预处理器宏为 1 或 2 时,将启用互斥并且 SQLite 是线程安全的。当 SQLITE_THREADSAFE宏为 0 时,互斥量将被忽略。没有互斥体,从多个线程同时使用 SQLite 是不安全的。
启用互斥体会导致可衡量的性能损失。因此,如果速度至关重要,则禁用互斥体是有意义的。但是为了最大程度的安全,应该启用互斥锁。默认行为是启用互斥锁。
应用程序可以使用此接口来确保它所链接的 SQLite 版本是使用SQLITE_THREADSAFE宏的所需设置编译的。
此接口仅报告SQLITE_THREADSAFE标志的编译时互斥设置。如果 SQLite 是用 SQLITE_THREADSAFE=1 或 =2 编译的,则默认情况下启用互斥锁,但可以使用 动词SQLITE_CONFIG_SINGLETHREAD、SQLITE_CONFIG_MULTITHREAD或SQLITE_CONFIG_SERIALIZED调用sqlite3_config()来完全或部分禁用。sqlite3_threadsafe() 函数的返回值仅显示线程安全的编译时设置,而不是 sqlite3_config() 对该设置所做的任何运行时更改。换句话说,sqlite3_threadsafe() 的返回值不会因调用 sqlite3_config() 而改变。
有关其他信息,请参阅线程模式文档。