2011-10-21 10 views
5

:直列化されたモードの http://www.sqlite.org/threadsafe.htmlSqliteをの直列化されたモードここではドキュメントで

が、それは言う: 「シリアル化されたモードでは、SQLiteは安全に制限なく複数のスレッドで使用することができます。」

私はそこに提示された保証を理解したいと思います。 "SQLITE_OPEN_FULLMUTEX"フラグを使用して1つのデータベース接続を開き、同時に2つのスレッドが同じ時刻にsqlite3_execを同時に呼び出そうとすると、Sqliteは自動的に呼び出しをシリアル化しますか?

答えて

4

答えははいです。 sqlite3_exec()は、関数が入力されたときにミューテックスを取得し、その関数が残ったときにmutextを解放します。任意の時点で1つのスレッドだけがmutexを所有できるので、常に1つのスレッドしかsqlite3_exec()を実行することはできません。 2つのスレッドが同時にsqlite3_exec()を実行しようとすると、一方のスレッドは他方のスレッドを待機します。

関連する問題