我需要通过单个对象从多个线程进行数据库访问操作,该对象包含数据库连接。我从SQLite3的网站上读到,说'sqlite3结构只能在调用sqlite3_open()的同一个线程中使用它来创建它。您无法在一个线程中打开数据库,然后将句柄传递给另一个线程以供其使用'。我想知道在我的情况下,是否存在线程不安全的威胁?
答案 0 :(得分:11)
如果使用-DSQLITE_THREADSAFE编译SQLite库,则可以使用更新的SQLite 3版本。
SQLite的作者says:
从版本3.5.0开始,SQLite使用其执行此功能 自己的内部互斥,因此应用程序可以自由地(尝试)使用 来自多个线程的同一数据库连接。