0
我一直在圍繞着關於多線程的SQLite文檔進行封裝,但還是不太明白。假設我有2個線程可以讀寫數據庫。我寫包含多個SQL語句的,所以我需要換他們明確的交易,是這樣的:在多線程環境中使用sqlite
sqlite3_exec (myDb, "BEGIN TRANSACTION", 0, 0, 0);
// write stuff here
sqlite3_exec (myDb, "COMMIT TRANSACTION", 0, 0, 0);
第一個問題:我需要在交易包讀取操作對我來說,主要的要求是,直到寫入事務完成它應該不可能讀取一半的寫入數據
第二:我可以在兩個線程中使用一個數據庫連接嗎? - 看起來像我不能,因爲如果兩個線程正在寫入數據庫,因此兩個打開的事務第二個「BEGIN TRANSACTION」語句將失敗。
那麼什麼是正確的方法在這裏:使用自己的鎖定機制?每個線程使用一個連接? - 在這種情況下會發生什麼,我應該擔心SQL_BUSY/SQL_LOCKED嗎?
謝謝!
[SQLite線程安全嗎?](https://sqlite.org/faq.html#q6) – 2013-09-26 05:39:35