c – 避免sqlite3数据库被锁定
我有一个使用sqlite(3.7.3)的多线程应用程序 我正在点击数据库锁定错误,这似乎很普遍. 让我来描述一下我正在建设什么.对不起,没有代码太大而复杂. 我有大约8个线程同时访问数据库.这些线程中的任何一个都可以同时读取或写入. 数据库中表中的每一行都有一个文件路径,该路径指向资源与该资源相关的其他属性. 3个领域是读者,状态和德尔. 每次线程从资源中读取时,读取器都会递增,但仅当状态为>时才会递增. 0和del = 0. 所以我有一些SQL
之后,我检查更新的行数.它应该只有1. 我尝试在事务中包装更新和选择,但这没有帮助. 现在,我认为默认情况下sqlite序列化.我尝试了几种开放模式,但我仍然得到同样的错误. 在你问之前,不,我不打算去mysql.我绝对需要零配置. 有人可以提供一些关于如何避免此类问题的指示吗?我应该将读卡器锁移出数据库吗?如果我这样做,我应该用什么机制替换它?我在C下使用Linux并且可以使用boost库. 编辑:
http://www.sqlite.org/c3ref/busy_timeout.html (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |