
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В SQLite нет возможности одновременного изменения данных несколькими процессами. Только один процесс в единицу времени может производить изменения данных, остальные процессы должны ждать. Чтение данных могут делать несколько процессов одновременно, но только не тогда, когда происходит изменение данных.
Для организации правильного доступа к БД процессы должны проверять в каком состоянии находится БД. Сделать это можно например через возврат ошибок: ERR_DATABASE_BUSY 5605 Файл базы данных заблокирован, или других. Нужно посмотреть какие ошибки БД возвращаются и в каких состояниях.
Посмотрите готовый пример - Сохранение результатов оптимизации в базу данных
Посмотрите готовый пример - Сохранение результатов оптимизации в базу данных
Я смотрел данный пример. В нем и в других примерах с кадрами выполняется сбор статистики тестера и разовая запись в БД.
В моем случае- из тестера в каждом проходе идет обращение к БД (включая запросы на удаление/создание таблиц и добавление записей) и возврат из БД значения для целевой функции. Поскольку агентов несколько и они обращаются к базе параллельно, возникают накладки, если этим процессом не управлять.
Я в итоге решил задачу оберткой всех запросов к базе в while(не выполнен запрос / невалидный хэндл). В таком варианте параллельность работы с базой допустима. Даже не требуются самодельные задержки в тестере. Все работает.