2011-11-01 33 views
5

我的应用程序管理一个SQLite数据库中的所有数据,这个数据库被多个线程访问。我可以锁定当前线程的SQLite表吗?

现在我一直在数据库本身保持所有的数据库调用同步。

我想这样做的原因是,偶尔我想通过从服务器抓取最新版本并从零开始重建表格来刷新表格。为了节省时间,我实际上制作了第二张表格,然后在完成时替换了原始表格(当我这样做时用同步来锁定它)。

问题是我偶尔有我的SQL调用拖延了很长一段时间(由于同步锁定),或者当SQL调用尝试在短时间内运行本身时出现错误,当我的表被复制过度。

是否有我的数据库从其他操作锁定,但它让操作A,B,C等同时运行?

干杯!

回答

0

我很确定你想要的是一个ReadWriteLock。基本上,它会在数据库中放置两个不同的锁,一个用于读取,一个用于写入。写锁定被锁定时,其他人无法读取或写入。如果任何读锁被锁定(通过任意数量的线程),写锁将无法锁定,直到每个人都读完。

+0

是!这几乎就是我正在寻找的东西!因为我在做的事情比同步更好。谢谢! :) – isep

+0

@isep你好,我一直在黑莓发展中的麻烦,其中我需要与多线程工作访问数据库打开和关闭,插入,更新,删除,所以你可以提供一些你的解决方案,或它的任何好在BB中的例子,现在我做了跟踪数据库打开和关闭计数的工作,但是有一段时间它给了我数据库例程无序错误。 – Herry

相关问题