嵌入式系统中的SQLite3文件锁定

时间:2015-10-16 07:17:16

标签: multithreading sqlite locking

有一个特殊的多线程嵌入式环境,必须包含和支持SQLite3引擎。它需要编写自定义的VFS(sqlite3_vfs)和自定义的互斥锁(sqlite3_mutex_methods)。线程模式设置为序列化SQLITE_THREADSAFE=1),并且共享缓存模式已激活(sqlite3_enable_shared_cache)。

考虑到只有线程但没有进程,是否需要支持文件锁定

1 个答案:

答案 0 :(得分:0)

SQLite使用文件锁定来防止多个连接相互干扰。

如果可以同时拥有多个连接,则需要实现(或模拟)文件锁定。 在shared-cache mode中,来自同一进程的多个连接实际上使用单个连接到数据库文件。

如果您没有实现文件锁定,最好从xLock / xCheckReservedLock实现返回错误,并强制应用程序使用带有{{3}的URI文件名}。