#android #ios #sql #multithreading
#Android #iOS #sql #многопоточность
Вопрос:
Я работаю в приложении многопоточной среды, где каждый из tread может получить доступ к локальной базе данных для выполнения своей операции CRUD.
Я не могу использовать асинхронный подход, потому что он не позволит другому потоку совместно использовать DB-объект, если один поток уже обращается к DB.
Обновление ссылки на общий доступ с помощью pslink поможет понять это. Итак, у меня есть SQLite в многопоточном режиме, но не сериализованный. Там я использую один объект DB для доступа через thread-db-oepration для эмуляции времени открытия-закрытия, я также использую подготовленный оператор.
Каким должен быть наилучший подход к доступу к БД в многопоточной среде.
Комментарии:
2. Спасибо @pskink за обмен. Я понимаю это, но в моей среде Mutex выполняются очень параллельные операции с каждым потоком, и не будет ничего удивительного, если DB-open / close займет больше времени, чем операция. Что вы предлагаете !! Пожалуйста, предложите, какой должен быть наилучший подход для решения этого уровня сценария.
3. @pskink пожалуйста, проверьте вопрос об обновлении, я добавил туда свое понимание и запрос.
4. Я не уверен, что понимаю вашу проблему, и все же… К тому моменту, когда вам потребовался многопоточный и МЬЮТЕКСНЫЙ доступ к БД, вариантов не так много: используйте блокировки БД (я бы вообще не рекомендовал) или какой-то оркестратор , который обрабатывает запрос, не допуская параллелизма, то есть процесс DB-Server с внутренней очередью.