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_SINGLETHREADSQLITE_CONFIG_MULTITHREADSQLITE_CONFIG_SERIALIZED调用sqlite3_config()来完全或部分禁用。sqlite3_threadsafe() 函数的返回值仅显示线程安全的编译时设置,而不是 sqlite3_config() 对该设置所做的任何运行时更改。换句话说,sqlite3_threadsafe() 的返回值不会因调用 sqlite3_config() 而改变。

有关其他信息,请参阅线程模式文档。

另请参阅 对象常量函数的列表。