私のアプリケーションは複数のスレッドで実行されます。sqlite3 データベースにアクセスするには、最大 4 つのスレッドが必要です。これを実装するために、データベースを別のスレッドで実行することにしました。このスレッドにはキューがあります (単純に文字列のベクトル)。このキューは、他の 4 つのワーカー スレッドからのパイプを通じて満たされます。制限時間後または最大。実行するキュー内の要素の数。
これは許容できる解決策ですか? または、誰かがより良いものを持っていますか?
私のアプリケーションは複数のスレッドで実行されます。sqlite3 データベースにアクセスするには、最大 4 つのスレッドが必要です。これを実装するために、データベースを別のスレッドで実行することにしました。このスレッドにはキューがあります (単純に文字列のベクトル)。このキューは、他の 4 つのワーカー スレッドからのパイプを通じて満たされます。制限時間後または最大。実行するキュー内の要素の数。
これは許容できる解決策ですか? または、誰かがより良いものを持っていますか?
SQLite はマルチスレッドを完全にサポートしています。独自の管理システムを実装することで、アプリケーションのパフォーマンスと応答性が向上する可能性がありますが、そうではない可能性もあります。
sqlite のマルチスレッドについて知っておく必要があるのは、sqlite スレッドセーフのドキュメントだけです。その文書の情報を考慮して、慎重な決定を下すことをお勧めします。
また、独自のソリューションを作成する場合は、上記のドキュメントの情報を使用して、不要な sqlite 内部同期を無効にすることができます。
補足: この質問/回答には、役立つ情報がいくつかあります:マルチスレッド アプリケーションで SQLite を使用する方法は?