我的应用程序在一个由多个线程访问的SQLiteDatabase中管理它的所有数据。
现在,我一直在数据库本身上保持所有数据库调用的同步。
我想这样做的原因是,有时我想通过从服务器获取最新版本并从stratch重新构建表来刷新表。为了节省时间,我实际上正在制作第二个表,然后在完成后替换原来的表(当我这样做的时候,用一个同步的来锁定它)。
问题要么是我偶尔会让我的SQL调用停顿很长一段时间(由于同步锁),要么是在我的one表被复制的短暂时间内,当SQL调用试图自行运行时,我会得到一个错误。
有没有一个was可以让我的数据库在刷新时锁定其他操作,但让操作A、B、C等同时运行?
干杯!
发布于 2011-11-01 18:52:16
我很确定你想要的是一个ReadWriteLock。基本上,它在数据库上放置了两个不同的锁,一个用于读取,另一个用于写入。当写锁被锁定时,其他任何人都不能读或写。如果任何读锁被锁定(被任意数量的线程锁定),写锁将无法锁定,直到每个人都读完为止。
https://stackoverflow.com/questions/7971371
复制相似问题