2011-10-21 40 views
5

在這裏的文檔: http://www.sqlite.org/threadsafe.htmlsqlite的的序列化模式

序列化模式,它說: 「在連載模式,SQLite的,可以安全地通過沒有任何限制多線程應用。」

我想確保我理解那裏提供的保證。如果使用「SQLITE_OPEN_FULLMUTEX」標誌打開單個數據庫連接,並且兩個線程同時嘗試在同一瞬間調用sqlite3_exec,Sqlite是否會自動序列化這些調用?

回答

4

答案是肯定的。 sqlite3_exec()將在輸入該功能時獲取互斥體,並在該功能離開時釋放互斥體。在任何給定時間只有一個線程可以擁有互斥鎖,因此在任何給定時間只有一個線程可以執行sqlite3_exec()。如果兩個線程同時嘗試執行sqlite3_exec(),則會等待另一個線程。