int sqlite3_threadsafe(void);
sqlite3_threadsafe() 函数仅当 SQLite 在编译时由于 SQLITE_THREADSAFE 编译时选项被设置为 0 而省略了互斥代码时才返回零。
SQLite 可以使用或不使用互斥体进行编译。当 SQLITE_THREADSAFE C 预处理器宏为 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() 的调用而改变。
有关更多信息,请参阅 线程模式 文档。