Small. Fast. Reliable.
Choose any three.

SQLite C接口

测试以查看库是否是线程安全的

int sqlite3_threadsafe(void);

当且仅当由于将SQLITE_THREADSAFE的编译时选项设置为0而省略省略码的情况下编译SQLite时,sqlite3_threadsafe()函数才返回零 。

SQLite可以带有或不带有互斥体进行编译。当SQLITE_THREADSAFE C预处理程序宏为1或2时,将启用互斥锁,并且SQLite是线程安全的。当 SQLITE_THREADSAFE宏为0时,互斥体将被省略。如果没有互斥锁,从多个线程中同时使用SQLite是不安全的。

启用互斥锁会导致可衡量的性能损失。因此,如果速度至关重要,则禁用互斥锁是有意义的。但是为了最大程度的安全,应该启用互斥锁。默认行为是启用互斥锁。

应用程序可以使用此接口,以确保使用所需的SQLITE_THREADSAFE宏设置编译了与其链接的SQLite版本。

此接口仅报告SQLITE_THREADSAFE标志的编译时互斥设置。如果使用SQLITE_THREADSAFE = 1或= 2编译SQLite,则默认情况下会启用互斥锁,但可以通过使用 带有动词SQLITE_CONFIG_SINGLETHREADSQLITE_CONFIG_MULTITHREADSQLITE_CONFIG_SERIALIZED的sqlite3_config()调用来完全或部分禁用互斥锁。sqlite3_threadsafe()函数的返回值仅显示线程安全的编译时设置,而不显示对sqlite3_config()所做的设置的任何运行时更改。换句话说,通过调用sqlite3_config()不会改变sqlite3_threadsafe()的返回值。

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

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