Sqlite的序列化模式

For*_*ing 7 sqlite thread-safety

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

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

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

Seb*_*ski 6

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