6

http://www.sqlite.org/threadsafe.htmlによると、sqlite を使用する場合、シングルスレッドマルチスレッドシリアライズの3 つの異なるスレッド モードがあります。シリアル化モードとマルチスレッドモードに設定すると、mutex が使用され (多かれ少なかれ使用されるモードに応じて)、シングルスレッドモードでは、mutex はまったく使用されません。

データベースがクエリ (読み取り専用アクセス) にのみ使用されると仮定すると、別のスレッドからアクセスしながらシングルスレッドモードを使用することは可能ですか? または、保護する必要のあるグローバル リソースはありますか?

さらに、デフォルトの ADO.NET アダプタSystem.Data.Sqliteを同じ方法で使用できますか?

4

1 に答える 1

4

SQLite ライブラリには、読み取り専用のデータベース ファイル (キャッシュ、コンパイル済みステートメント、結果セットなど) でも変更される多くの内部データ構造があるため、複数のスレッドからシングル スレッド接続にアクセスしてはなりません。

ADO.NET はスレッド セーフを保証しないため、System.Data.SQLite も同様です。

于 2012-12-18T10:45:23.563 に答える