Sqlite的序列化模式

时间:2011-10-21 13:23:49

标签: sqlite thread-safety

在这里的文档中: http://www.sqlite.org/threadsafe.html

对于序列化模式,它说: “在序列化模式下,SQLite可以被多个线程安全地使用,没有任何限制。”

我想确保我理解那里提供的保证。如果使用“SQLITE_OPEN_FULLMUTEX”标志打开单个数据库连接,并且两个线程同时尝试在同一时刻调用sqlite3_exec,Sqlite会自动序列化调用吗?

1 个答案:

答案 0 :(得分:5)

答案是肯定的。输入函数时sqlite3_exec()将获取互斥锁,并在函数离开后释放互斥文件。在任何给定时间只有一个线程可以拥有互斥锁,因此在任何给定时间只有一个线程可以执行sqlite3_exec()。如果两个线程同时尝试执行sqlite3_exec(),则会等待另一个线程。