Запускать процессы FMDB в одном фоновом потоке? - PullRequest
1 голос
/ 13 октября 2011

У меня проблемы с использованием fmdb для чтения и записи данных в одну и ту же базу данных.

В моем приложении есть случаи, когда 1 класс записывал данные в базу данных в фоновом потоке, а другой класс считывал данныеиз одной и той же базы данных в главном потоке процессы чтения и записи обрабатывают довольно большие данные, например несколько сотен NSDictionary.

Я слышал, что fmdb не является "потоко-безопасным", что приведет к сбою моегоприложение, когда я пытаюсь читать и писать в приведенном выше сценарии.Я также слышал предложения по запуску двух процессов fmdb в одном потоке, чтобы приложение не зависало.

Я пытался запустить их оба в фоновых потоках (используя NSInvocationOperation), но он завершился сбоем, я понялчто они на самом деле работают в отдельных фоновых потоках, которые вызвали конфликт.

Итак, вопрос в том, как заставить все процессы fmdb работать в одном фоновом потоке, чтобы они не вызывали сбой моего приложения?

Или есть какие-то альтернативы, обрабатывающие мои данные SQL?

* Извините, если я не объяснил это ясно, желаю уточнить.

Спасибо за чтение!

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

FMDatabaseQueue был сделан специально для этого случая: https://github.com/ccgus/fmdb

Попробуйте, и если это не имеет смысла, дайте мне знать.

1 голос
/ 27 марта 2012

Если вы посмотрите самую последнюю документацию для FMDB, вы увидите, что теперь они предоставляют очередь, которая позволяет использовать FMDB в поточно-ориентированном режиме.

...