Как выполнить SQL-синхронизацию в многопоточной среде?

#android #ios #sql #multithreading

#Android #iOS #sql #многопоточность

Вопрос:

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

Я не могу использовать асинхронный подход, потому что он не позволит другому потоку совместно использовать DB-объект, если один поток уже обращается к DB.

Обновление ссылки на общий доступ с помощью pslink поможет понять это. Итак, у меня есть SQLite в многопоточном режиме, но не сериализованный. Там я использую один объект DB для доступа через thread-db-oepration для эмуляции времени открытия-закрытия, я также использую подготовленный оператор.

Каким должен быть наилучший подход к доступу к БД в многопоточной среде.

Комментарии:

1. смотрите это и это

2. Спасибо @pskink за обмен. Я понимаю это, но в моей среде Mutex выполняются очень параллельные операции с каждым потоком, и не будет ничего удивительного, если DB-open / close займет больше времени, чем операция. Что вы предлагаете !! Пожалуйста, предложите, какой должен быть наилучший подход для решения этого уровня сценария.

3. @pskink пожалуйста, проверьте вопрос об обновлении, я добавил туда свое понимание и запрос.

4. Я не уверен, что понимаю вашу проблему, и все же… К тому моменту, когда вам потребовался многопоточный и МЬЮТЕКСНЫЙ доступ к БД, вариантов не так много: используйте блокировки БД (я бы вообще не рекомендовал) или какой-то оркестратор , который обрабатывает запрос, не допуская параллелизма, то есть процесс DB-Server с внутренней очередью.