我正在开发一个相当大规模的应用程序,它有多个线程通过c ++访问sqlite3。我现在正在给他们每个人一个数据库连接并使用互斥锁来确保在写入的同时没有任何东西在读。
这似乎工作正常,但经过一段时间的运行(似乎大约13个小时),数据库发生了一些事情,我无法再从任何一个连接访问它(说数据库被锁定为while,然后切换到无法打开数据库文件)。
我无法追查这个问题的原因(因为它只发生在大约13个小时的运行后),但我想知道我是否应该这是因为长时间保持连接打开。
每次想要访问数据库时,让我的线程打开并关闭新连接会更好吗?或者他们可以长时间保持开放连接吗?
答案 0 :(得分:1)
在大多数情况下,最好保持连接。这是因为创建新连接需要时间。请检查您的代码并检查一些死亡关系。