Sqlite 的 Serialized 模式

14
在这里的文档中: http://www.sqlite.org/threadsafe.html 针对串行化模式,文档表示: “在串行化模式下,SQLite可以被多个线程安全使用,没有限制。”
我想确保理解了文档中提供的保证。如果使用“SQLITE_OPEN_FULLMUTEX”标志打开单个数据库连接,并且两个线程同时尝试在完全相同的瞬间调用sqlite3_exec,Sqlite是否会自动序列化调用?
1个回答

10

答案是肯定的。sqlite3_exec() 在函数进入时会获取互斥锁,在离开函数时释放该互斥锁。同一时间只能有一个线程拥有该互斥锁,因此同一时间只能有一个线程执行 sqlite3_exec() 。如果两个线程同时尝试执行 sqlite3_exec() ,则一个线程将等待另一个线程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接