sqlite使用中出现死锁怎么办

sqlite使用中出现死锁怎么办,第1张

sqlite作为一款轻量的嵌入式数据库,本身没有提供复杂的锁定机制,无法内部管理多路并发下的数据 *** 作同步问题,更谈不上优化,所以,如果你的程序多线程并发 *** 作同一sqlite库,必须自己设计处理可能的并发导致的死锁等,以保障数据安全和程序容错。

多线程是很容易造成死锁,一般情况下死锁都是因为并发 *** 作引起的。我不懂JAVA,但死锁这个问题每种开发工具和数据库都会碰到.解决办法是:

1、程序方面优化算法(如有序资源分配法、银行算法等),在一个程序里,能不用多线程更新同一张数据库表 尽量不要用,如果要用,其避免死锁的算法就很复杂。

2、数据库方面设置等待超时时间

3、发生死锁后直接KILL掉数据库进程

您好,很高兴能帮助您,

哪个线程用到的moc就在那个线程内创建。 所以把threadManageContext放在线程中创建,就正确了。

有两种方法,一种是每一个线程有一个NSManagedObjectContext与persistent store coordinator, 另一种是每一个线程有一个但共享一个persistent store coordinator

我采用的第二种方法。

我有两个线程,一个UI主线程,一个后台线程,后台线程用它的NSManagedObjectContext不断 *** 作数据库,同时用Notifications的方式通知主线程的NSManagedObjectContext进行mergeChangesFromContextDidSaveNotification *** 作。这是官网文档的方法。

在UI主线程,我用它的NSManagedObjectContext *** 作数据库,并显示到UITableView列表,可以显示出来,但是我一拖动列表, 程序就crash,并指向子线程当中。 如果我不拖动列表,程序可以跑一天也没问题(子测试用while一直调用我的方法)

你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!

如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9391365.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存