1

iOS アプリケーションで SQLite 3 を使用しています。多くの読み取り/書き込み操作が必要であり、それらの多くは同時に試行されます。これらの関数のほとんどは別々のスレッドで実行されていますが、同じデータベースにアクセスしています。

私が考えたいくつかの方法を次に示します。

  1. すべてのデータベース アクセス (読み取り/書き込み) でフラグを設定しdatabase_open=YES、それが true であることが判明した場合は、数秒後に再試行します。関数をデータベース層自体に置くことができます。

  2. すべてのデータベース操作を同じスレッドで実行します。ただし、私の使用例では、いくつかの HTTP 呼び出しが終了し、取得したデータを SQLite に保存するのを待つ必要があります。この方法では、これらすべてのサーバー呼び出しを同期させる必要があります。最高のアイデアではありません。

私が間違った方向に考えているかどうかを提案してください。

4

1 に答える 1

1

SQLiteは、複数のスレッドからの同時アクセスをサポートしています。SQLITE_CONFIG_MULTITHREAD モードを構成し、各スレッドからデータベースを個別に開くだけです。

于 2013-10-07T13:15:12.423 に答える