1

fmdb を使用して同じデータベースにデータを読み書きする際に問題が発生しています。

私のアプリには、1 つのクラスがバックグラウンド スレッドでデータベースにデータを書き込み、別のクラスがメイン スレッドで同じデータベースからデータを読み取るインスタンスがあり、読み取りプロセスと書き込みプロセスの両方が、数百の NSDictionary のようなかなり大きなデータを処理します。 .

fmdb は「スレッドセーフ」ではないと聞いたことがあります。上記のシナリオで読み書きしようとするとアプリがクラッシュします。アプリがクラッシュしないように、同じスレッドで 2 つの fmdb プロセスを実行するという提案も聞きました。

バックグラウンド スレッドで (NSInvocationOperation を使用して) 両方を実行しようとしましたが、クラッシュします。実際には、競合の原因となった別のバックグラウンド スレッドで実行されていることに気付きました。

問題は、アプリがクラッシュしないように、すべての fmdb プロセスを同じバックグラウンド スレッドで実行するにはどうすればよいかということです。

または、SQL データを処理する代替手段はありますか?

※説明不足で申し訳ありませんが、よろしくお願いします。

読んでくれてありがとう!

4

2 に答える 2

3

FMDatabaseQueue は、この場合のために特別に作成されました: https://github.com/ccgus/fmdb

試してみて、意味が分からない場合はお知らせください。

于 2012-03-27T16:33:06.780 に答える
1

FMDBの最新のドキュメントを見ると、FMDBのスレッドセーフな使用を可能にするキューが提供されていることがわかります。

于 2012-03-27T15:50:29.083 に答える