首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Test To See If The Library Is Threadsafe

代码语言:javascript
复制
int sqlite3_threadsafe(void);

当且仅当由于SQLITE_THREADSAFE编译时选项被设置为0而忽略了忽略代码才编译SQLite时,sqlite3_threadsaf()函数返回零。

可以使用或不使用互斥锁来编译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()而改变。

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

扫码关注腾讯云开发者

领取腾讯云代金券