有一个特殊的多线程嵌入式环境,必须包含和支持SQLite3引擎。它需要编写自定义的VFS(sqlite3_vfs
)和自定义的互斥锁(sqlite3_mutex_methods
)。线程模式设置为序列化(SQLITE_THREADSAFE=1
),并且共享缓存模式已激活(sqlite3_enable_shared_cache
)。
考虑到只有线程但没有进程,是否需要支持文件锁定?
答案 0 :(得分:0)
SQLite使用文件锁定来防止多个连接相互干扰。
如果可以同时拥有多个连接,则需要实现(或模拟)文件锁定。 在shared-cache mode中,来自同一进程的多个连接实际上使用单个连接到数据库文件。
如果您没有实现文件锁定,最好从xLock
/ xCheckReservedLock
实现返回错误,并强制应用程序使用带有{{3}的URI文件名}。