Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.07.2019, 21:14
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
Имеется ДЛЛ С++ взаимодействующая с приложением через C-API. Пусть в ДЛЛ три экспорт функции и класс cDB, отвечающий за все взаимодействие с БД Sqlite. 1. Приложение вызывает 1-ю функцию ДЛЛ - создается объект класса cDB и через функции cDB что-то пишется в БД. 2. Приложение вызывает время от времени 2-ю функцию ДЛЛ и через cDB пишет данные в БД. 3. приложение вызывает время от времени 3-ю функцию ДЛЛ и через cDB пишет данные в БД. Однако, нет, не пишет. ДЛЛ видит объект cDB, работает с его функциями, однако не видит соединение с БД в cDB, однако, соединение при этом есть и работает. При этом Sqlitе свободна от какого либо взаимодействия с чем либо, для чего функция м.б. заблокирована - что не дает эффекта. Надо отметить, что функция 2 работает без каких либо проблем (видимо работает в одном потоке с функциями по п.1. Приложение многопоточное, и в каком потоке какая функция ДЛЛ будет вызываться, и сколько их вообще, потоков в приложении, неизвестно. Пока видится решение в создании соединения с БД для каждого потока приложения, но неизвестно сколько их, потоков. Не исключено также, что одна и та-же функция в в ДЛЛ может вызываться разными событиями и потоками в приложении. С другой стороны, потоки, вроде бы, должны работать в одном адресном пространстве и видеть переменные, ведь видим объект cDB в п.3. "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна" ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:17
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
Ошибся, следует читать. При этом Sqlitе свободна от какого либо взаимодействия с чем либо, для чего функция по п.2 м.б. заблокирована - что не дает эффекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:28
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
При вызове из тестового приложения последовательно из одного потока все функции работают? Что с одновременным обращением из разных потоков? https://sqlite.org/threadsafe.html ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:28
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBAПока видится решение в создании соединения с БД для каждого потока приложения, но неизвестно сколько их, потоков.ну, это известно. Что коннект в дровах не потокозащищеный объект. Поэтому программист обязан либо при старте потока внутрь дать коннект, либо каждый поток берет коннект из пула коннектов. Главное чтобы они не дрались между собой, два потока к одному коннекту. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:33
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
Barlone, Круто у sqllite.. авторSerialized . В сериализованном режиме SQLite может безопасно использоваться несколькими потоками без ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:38
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
PetroNotC Sharp, не дерутся. Полностью блокируем вызовы БД потока по п.2. По п.3 соединение с БД не видит, хотя по структурам и вспомогательным классам созданным new в классе cDB все отрабатывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:41
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
Barlone, из 1-го потока работают, из 2-го нет. Хотя БД сконфигурирована под фулмьютех, пока вопрос одновременности не ставился, пока все по очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:54
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBA, Логируйте с выводом в лог id потока. Хорошим логировщиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 21:57
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBA"Есть многое на свете, друг Горацио, что и не сразу в голову придет." "Есть муторный процесс на свете этом, который кличут все отладкой." "Видит" - "не видит" это бесполезный эмоциональный бред. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 22:27
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
PetroNotC Sharp, И что даст логгирование? Решение? Ошибиться в программе там просто уже негде. Все выкинуто, функции п.2 и п.3 сделаны абсолютно примитивными и идентичными. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Dimitry Sibiryakov, что здесь отлаживать? Никаких внешних данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 22:46
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
Dimitry SibiryakovВидит" - "не видит" это бесполезный эмоциональный бред.+1 Аффтар.Приведите свои мысли в порядок и сформулируйте вопрос топика. Коротко! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 22:50
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBAВсе выкинутоеще выкидывайте. char SQL ЗАЧЕМ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 22:51
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
PetroNotC SharpYUBAВсе выкинутоеще выкидывайте. char SQL ЗАЧЕМ? Это уже не смешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 22:54
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBAPetroNotC Sharpпропущено... еще выкидывайте. char SQL ЗАЧЕМ? Это уже не смешно.разумеется. Стек ошибки где? Что значит "не видит"? Так домохозяйки говорят. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 23:03
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
PetroNotC Sharp, не поможет вам стек. Понял, только, что вы любитель демагогии. До свидания. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.07.2019, 23:09
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBA, Добро пожаловать в форум! Хорошо что я вас привел в чувство). Работайте! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 04:44
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
PetroNotC SharpКруто у sqllite..авторSerializedЧто крутого в организации очереди для строго последовательного исполнения запросов??? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 06:27
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
YUBAPetroNotC Sharp, И что даст логгирование? Решение? Ошибиться в программе там просто уже негде. Все выкинуто, функции п.2 и п.3 сделаны абсолютно примитивными и идентичными. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Dimitry Sibiryakov, что здесь отлаживать? Никаких внешних данных.Так не должно бытью Ну SQLite в исходниках же, зайдите уже внутрь sqlite3_exec и посмотрите, что там происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 07:09
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
Basil A. Sidorov, Если так то это банально конечно. Вот смотри. Беру постгри базу и обязан делать коннект на поток. Так как не Thread-safe. А тут заявлено что пофигу. Круче? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 08:09
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
Посмотри что возвращает sqlite3_threadsafe() ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 08:29
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
Basil A. Sidorov, Фигня этот режим многопоточности в данной конкретной бд. Это не поможет если в клиентском коде бардак. http://www.prog.org.ru/topic_30824_45.html Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 08:33
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
Ну а бардак в прикладном коде потому что YUBAно неизвестно сколько их, потоков. Не исключено также, что одна и та-же функция в в ДЛЛ может вызываться разными событиями и потоками в приложении. Надо четко знать, что у нас thread safe и что нет. Как MS в шарпе ввел даже слово async чтобы помечать)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 12:11
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
Dima TПосмотри что возвращает sqlite3_threadsafe() Сразу и смотрел =1. С этой стороны проблем не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 12:39
|
|||
---|---|---|---|
|
|||
Sqlite в многопоточной программе. |
|||
#18+
YUBADima TПосмотри что возвращает sqlite3_threadsafe() Сразу и смотрел =1. С этой стороны проблем не должно быть.ваши проблемы мы "не видим", так же как вы и пишите в заголове сообщения. Увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.07.2019, 13:11
|
|||
---|---|---|---|
Sqlite в многопоточной программе. |
|||
#18+
YUBADima TПосмотри что возвращает sqlite3_threadsafe() Сразу и смотрел =1. С этой стороны проблем не должно быть. Если правильно понимаю, то https://sqlite.org/compile.html#threadsafe SQLITE_THREADSAFE=1 sets the default threading mode to Serialized. Получается все должно работать. Возможно проблема совсем в другом, например обращение к БД происходит до открытия БД. Ошибка какая в err ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=57&mobile=1&tid=2017590]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 169ms |
0 / 0 |