如果您无法避免并发或丢弃sqlite,请将您的写入事务封装在BEGIN IMMEDIATE中; … 结束;. sqlite中的默认事务模式为DEFERRED,这意味着仅在第一次实际写入尝试时才获取锁定.使用IMMEDIATE事务,锁将立即获取,或者立即获得sqlITE_BUSY.当有人持有对数据库的锁定时,其他锁定尝试将导致sqlITE_BUSY.
处理sqlITE_BUSY是你自己决定的.对于许多应用程序,等待一秒或两秒,然后重试正常工作,在n次尝试失败后放弃.有sqlite3 API帮助者使这样很容易,例如sqlite3_busy_handler()和sqlite3_busy_timeout(),但它也可以手动完成.
您还可以使用 *** 作系统级同步来获取数据库的互斥锁,或者使用 *** 作系统层级的跨线程/进程间消息传递来在一个线程完成访问数据库时发出信号.
总结以上是内存溢出为你收集整理的SQLite3和多个进程全部内容,希望文章能够帮你解决SQLite3和多个进程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)