在这里的文档中: http://www.sqlite.org/threadsafe.html
对于序列化模式,它说: “在序列化模式下,SQLite可以被多个线程安全地使用,没有任何限制。”
我想确保我理解那里提供的保证。如果使用“SQLITE_OPEN_FULLMUTEX”标志打开单个数据库连接,并且两个线程同时尝试在同一时刻调用sqlite3_exec,Sqlite会自动序列化调用吗?
答案 0 :(得分:5)
答案是肯定的。输入函数时sqlite3_exec()
将获取互斥锁,并在函数离开后释放互斥文件。在任何给定时间只有一个线程可以拥有互斥锁,因此在任何给定时间只有一个线程可以执行sqlite3_exec()
。如果两个线程同时尝试执行sqlite3_exec()
,则会等待另一个线程。