2011-11-01 34 views
5

我的應用程序管理一個SQLite數據庫中的所有數據,這個數據庫被多個線程訪問。我可以鎖定當前線程的SQLite表嗎?

現在我一直在數據庫本身保持所有的數據庫調用同步。

我想這樣做的原因是,偶爾我想通過從服務器抓取最新版本並從零開始重建表格來刷新表格。爲了節省時間,我實際上製作了第二張表格,然後在完成時替換了原始表格(當我這樣做時用同步來鎖定它)。

問題是我偶爾有我的SQL調用拖延了很長一段時間(由於同步鎖定),或者當SQL調用嘗試在短時間內運行本身時出現錯誤,當我的表被複制過度。

是否有我的數據庫從其他操作鎖定,但它讓操作A,B,C等同時運行?

乾杯!

回答

0

我很確定你想要的是一個ReadWriteLock。基本上,它會在數據庫中放置兩個不同的鎖,一個用於讀取,一個用於寫入。寫鎖定被鎖定時,其他人無法讀取或寫入。如果任何讀鎖被鎖定(通過任意數量的線程),寫鎖將無法鎖定,直到每個人都讀完。

+0

是!這幾乎就是我正在尋找的東西!因爲我在做的事情比同步更好。謝謝! :) – isep

+0

@isep你好,我一直在黑莓發展中的麻煩,其中我需要與多線程工作訪問數據庫打開和關閉,插入,更新,刪除,所以你可以提供一些你的解決方案,或它的任何好在BB中的例子,現在我做了跟蹤數據庫打開和關閉計數的工作,但是有一段時間它給了我數據庫例程無序錯誤。 – Herry

相關問題