powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Sqlite в многопоточной программе.
85 сообщений из 85, показаны все 4 страниц
Sqlite в многопоточной программе.
    #39841124
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется ДЛЛ С++ взаимодействующая с приложением через C-API. Пусть в ДЛЛ три экспорт функции и класс cDB, отвечающий за все взаимодействие с БД Sqlite.
1. Приложение вызывает 1-ю функцию ДЛЛ - создается объект класса cDB и через функции cDB что-то пишется в БД.
2. Приложение вызывает время от времени 2-ю функцию ДЛЛ и через cDB пишет данные в БД.
3. приложение вызывает время от времени 3-ю функцию ДЛЛ и через cDB пишет данные в БД. Однако, нет, не пишет. ДЛЛ видит объект cDB, работает с его функциями, однако не видит соединение с БД в cDB, однако, соединение при этом есть и работает. При этом Sqlitе свободна от какого либо взаимодействия с чем либо, для чего функция м.б. заблокирована - что не дает эффекта.
Надо отметить, что функция 2 работает без каких либо проблем (видимо работает в одном потоке с функциями по п.1.
Приложение многопоточное, и в каком потоке какая функция ДЛЛ будет вызываться, и сколько их вообще, потоков в приложении, неизвестно.

Пока видится решение в создании соединения с БД для каждого потока приложения, но неизвестно сколько их, потоков. Не исключено также, что одна и та-же функция в в ДЛЛ может вызываться разными событиями и потоками в приложении.
С другой стороны, потоки, вроде бы, должны работать в одном адресном пространстве и видеть переменные, ведь видим объект cDB в п.3.

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841125
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибся, следует читать.
При этом Sqlitе свободна от какого либо взаимодействия с чем либо, для чего функция по п.2 м.б. заблокирована - что не дает эффекта.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841127
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При вызове из тестового приложения последовательно из одного потока все функции работают?
Что с одновременным обращением из разных потоков? https://sqlite.org/threadsafe.html
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841128
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAПока видится решение в создании соединения с БД для каждого потока приложения, но неизвестно сколько их, потоков.ну, это известно. Что коннект в дровах не потокозащищеный объект.
Поэтому программист обязан либо при старте потока внутрь дать коннект, либо каждый поток берет коннект из пула коннектов.
Главное чтобы они не дрались между собой, два потока к одному коннекту.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841129
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone,
Круто у sqllite..
авторSerialized . В сериализованном режиме SQLite может безопасно использоваться несколькими потоками без ограничений.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841130
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, не дерутся. Полностью блокируем вызовы БД потока по п.2. По п.3 соединение с БД не видит, хотя по структурам и вспомогательным классам созданным new в классе cDB все отрабатывается.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841131
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone, из 1-го потока работают, из 2-го нет. Хотя БД сконфигурирована под фулмьютех, пока вопрос одновременности не ставился, пока все по очереди.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841134
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Логируйте с выводом в лог id потока. Хорошим логировщиком.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841135
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA"Есть многое на свете, друг Горацио, что и не сразу в голову придет."

"Есть муторный процесс на свете этом, который кличут все отладкой."

"Видит" - "не видит" это бесполезный эмоциональный бред.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841141
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, И что даст логгирование? Решение? Ошибиться в программе там просто уже негде. Все выкинуто, функции п.2 и п.3 сделаны абсолютно примитивными и идентичными.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
sqlite3 *db=0;

int func1() // работает
{
const char* SQL = "CREATE TABLE IF NOT EXISTS tab1(a0 real, a1 real, a2 real, a3);";
sqlite3_exec(db, SQL, 0, 0, &err);
}

int func2() //вызывается из другого потока, не видит соединения с БД.
{
// er= sqlite3_prepare_v2(db, "begin;", 10, &ppStmt, &tail); // остатки старого кода. на этом уже затыкался.
const char* SQL = "CREATE TABLE IF NOT EXISTS tab2(a0 real, a1 real, a2 real, a3);";
sqlite3_exec(db, SQL, 0, 0, &err);
}


Dimitry Sibiryakov, что здесь отлаживать? Никаких внешних данных.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841147
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВидит" - "не видит" это бесполезный эмоциональный бред.+1
Аффтар.Приведите свои мысли в порядок и сформулируйте вопрос топика. Коротко!
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841149
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAВсе выкинутоеще выкидывайте. char SQL ЗАЧЕМ?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841150
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpYUBAВсе выкинутоеще выкидывайте. char SQL ЗАЧЕМ? Это уже не смешно.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841152
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharpпропущено...
еще выкидывайте. char SQL ЗАЧЕМ? Это уже не смешно.разумеется.
Стек ошибки где?
Что значит "не видит"?
Так домохозяйки говорят.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841154
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, не поможет вам стек. Понял, только, что вы любитель демагогии. До свидания.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841157
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Добро пожаловать в форум!
Хорошо что я вас привел в чувство).
Работайте!
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841184
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpКруто у sqllite..авторSerializedЧто крутого в организации очереди для строго последовательного исполнения запросов???
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841188
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharp, И что даст логгирование? Решение? Ошибиться в программе там просто уже негде. Все выкинуто, функции п.2 и п.3 сделаны абсолютно примитивными и идентичными.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
sqlite3 *db=0;

int func1() // работает
{
const char* SQL = "CREATE TABLE IF NOT EXISTS tab1(a0 real, a1 real, a2 real, a3);";
sqlite3_exec(db, SQL, 0, 0, &err);
}

int func2() //вызывается из другого потока, не видит соединения с БД.
{
// er= sqlite3_prepare_v2(db, "begin;", 10, &ppStmt, &tail); // остатки старого кода. на этом уже затыкался.
const char* SQL = "CREATE TABLE IF NOT EXISTS tab2(a0 real, a1 real, a2 real, a3);";
sqlite3_exec(db, SQL, 0, 0, &err);
}


Dimitry Sibiryakov, что здесь отлаживать? Никаких внешних данных.Так не должно бытью Ну SQLite в исходниках же, зайдите уже внутрь sqlite3_exec и посмотрите, что там происходит.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841194
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Если так то это банально конечно.
Вот смотри.
Беру постгри базу и обязан делать коннект на поток. Так как не Thread-safe.
А тут заявлено что пофигу.
Круче?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841198
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри что возвращает sqlite3_threadsafe()
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841200
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Фигня этот режим многопоточности в данной конкретной бд.
Это не поможет если в клиентском коде бардак.
http://www.prog.org.ru/topic_30824_45.html
Имхо
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841202
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а бардак в прикладном коде потому что
YUBAно неизвестно сколько их, потоков. Не исключено также, что одна и та-же функция в в ДЛЛ может вызываться разными событиями и потоками в приложении.
Надо четко знать, что у нас thread safe и что нет.
Как MS в шарпе ввел даже слово async чтобы помечать))
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841327
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПосмотри что возвращает sqlite3_threadsafe() Сразу и смотрел =1. С этой стороны проблем не должно быть.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841338
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima TПосмотри что возвращает sqlite3_threadsafe() Сразу и смотрел =1. С этой стороны проблем не должно быть.ваши проблемы мы "не видим", так же как вы и пишите в заголове сообщения.
Увы.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841358
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima TПосмотри что возвращает sqlite3_threadsafe() Сразу и смотрел =1. С этой стороны проблем не должно быть.
Если правильно понимаю, то
https://sqlite.org/compile.html#threadsafe SQLITE_THREADSAFE=1 sets the default threading mode to Serialized.
Получается все должно работать.

Возможно проблема совсем в другом, например обращение к БД происходит до открытия БД. Ошибка какая в err ?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841377
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВозможно проблема совсем в другом, например обращение к БД происходит до открытия БД. Ошибка какая в err ?
Точно, что после открытия БД. err - не знаю. Try...catch надо ставить, а как и куда err вытащить неизвестно. Само приложение пишет, что не определен указатель - а единственный указатель, это и есть sqlite3 *db - сейчас не могу посмотреть в оригинале.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841380
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBATry...catch надо ставить, а как и куда err вытащить неизвестно.тяжелый случай.

YUBAпишет, что не определен указатель
Скрин сюда того где ОНО САМО пишет.

YUBAсейчас не могу посмотреть в оригинале.вот когда будешь рядом с компом и продоложим.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841384
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Найди место на самом вверху в ГУИ, где происходит mess про указатель.
Потом в коде например buttonClick....
Оберни все это место try.
Всё.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841399
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima TВозможно проблема совсем в другом, например обращение к БД происходит до открытия БД. Ошибка какая в err ?
Точно, что после открытия БД. err - не знаю. Try...catch надо ставить, а как и куда err вытащить неизвестно. Само приложение пишет, что не определен указатель - а единственный указатель, это и есть sqlite3 *db - сейчас не могу посмотреть в оригинале.
Не должно быть никаких исключений. Проверяй в начале
Код: plaintext
1.
if(db == 0) ... база еще не обкрыта



err тоже указатель, ты как его объявил?

Пример обработки ошибок отсюда
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    sqlite3 *db;
    char *err_msg = 0;
    
    int rc = sqlite3_open(":memory:", &db);
    
    if (rc != SQLITE_OK) {
        fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }
    
...
    
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
    
    if (rc != SQLITE_OK ) {
        fprintf(stderr, "Failed to create table\n");
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    } else {
        fprintf(stdout, "Table Friends created successfully\n");
    }
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841414
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе должно быть никаких исключенийсама база не выдаёт каких нибудь. Data not found... /FK?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841420
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpDima TНе должно быть никаких исключенийсама база не выдаёт каких нибудь. Data not found... /FK?
Насколько понимаю для этого сделан возврат ошибок.
Если не путаю, SQLite написана на C, а в C нет исключений, они в С++. Да и в документации ни слова про исключения.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841428
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Да. Они где то выше уровнем.
Я по диагонали гугл глянул - андроид и т.д.
Еще странно что про try автор первый сказал).
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841433
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, да, понятно. Но это ДЛЛ - нет там ни консоли ни ГУИ. Куда я stdout?
Пока все штатно, я могу в приложение текст возвратить, и оно выведет (открытие БД, в частности, и пр. - это все сделано). В данном случае до текста не доходит, и выбрасывается - не определен указатель - это поток приложения пишет, до err дело не доходит. Даже на err= sqlite3_prepare_v2(db, "begin;", 10, &ppStmt, &tail); Если оставить обе функции, то одна пишет в БД, вторая исключение дает. ДЛЛ продолжает исполняться. И получаем вывод типа:
ОК, не опр ук-тель, не опр ук-тель, не опр ук-тель, не опр ук-тель, ОК. Функции уже просто идентичны.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841439
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAНо это ДЛЛ - нет там ни консоли ни ГУИ. Куда я stdout?в лог файл все пишут.

YUBAмогу в приложение текст возвратить,наверно сначала вызов самой длл идет? Вот там stdout есть и перехват exception есть.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841444
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima T, да, понятно. Но это ДЛЛ - нет там ни консоли ни ГУИ. Куда я stdout?
В файл тоже нельзя писать? Навтыкай записей после каждой строки, пиши все подряд, что вызываешь, какие значения параметров.

fflush() не забывай вызывать.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841458
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpнаверно сначала вызов самой длл идет? Вот там stdout есть и перехват exception есть.
Вызов функций в ДЛЛ - все в норме. Вся работа с БД в классе, поток класс видит, все функции класса штатно исполняются, затык только на указателе sqlite3 *db;
Может это имеет значение - поток в котором коннектится ДЛЛ и создается подключение к БД отсоединен (detach), и крутится в ДЛЛ в цикле. Через него вызываются доступные функции приложения. Остальные потоки - события приложения.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841466
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAВызов функций в ДЛЛ - все в норме.мы это не видим. Если ГУИ стартануло поток, то он пройдет через 100 длл вызовов и вернется опять в ГУИ.

YUBAМожет это имеет значениеимеет.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841469
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAdetachесли есть тяжелые работы, то ТОЛЬКО ДЛЯ НИХ берется ОДИН ПОТОК НА РАБОТУ.
Либо из пула, либо заготовить штук 20, либо при аттаче потока он сам берет коннект до конца работы.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841470
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAОстальные потоки - события приложения.всё ГУИ это один основной поток. И все события в нем тоже.
Итого у вас один основной и один дополнительный.
Вот проверяйте это по логам с выводом id thread
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841471
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpDima TНе должно быть никаких исключенийсама база не выдаёт каких нибудь. Data not found... /FK?

Сама база, тем более sqlite , ничего не может выдавать
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841472
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Вау! Шарпист по теме слово сказал)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841473
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Возможно у вас основной полез в доп.поток или наоборот. Напрямую они лезть не должны.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841477
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpесли есть тяжелые работы, то ТОЛЬКО ДЛЯ НИХ берется ОДИН ПОТОК НА РАБОТУ.
Либо из пула, либо заготовить штук 20, либо при аттаче потока он сам берет коннект до конца работы. Детач поток выдается нам приложением для подключения ДЛЛ, конфигурации и пр. Завершение этого потока - эквивалентна отключению ДЛЛ от приложения. Его надо держать до конца работы с ДЛЛ.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841484
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpРолг Хупин,
Вау! Шарпист по теме слово сказал)

П. да, ты сказал слово
Фильм "Сережа", 1960
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841485
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharpесли есть тяжелые работы, то ТОЛЬКО ДЛЯ НИХ берется ОДИН ПОТОК НА РАБОТУ.
Либо из пула, либо заготовить штук 20, либо при аттаче потока он сам берет коннект до конца работы. Детач поток выдается нам приложением для подключения ДЛЛ, конфигурации и пр. Завершение этого потока - эквивалентна отключению ДЛЛ от приложения. Его надо держать до конца работы с ДЛЛ.тут не знаю. Смотрите логи как выше сказал на вызов перекрестный. Будет райзе, либо ваша ошибка.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841549
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAДетач поток выдается нам приложением для подключения ДЛЛ, конфигурации и пр. Завершение
этого потока - эквивалентна отключению ДЛЛ от приложения.

Ага, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841559
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАга, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам. Ерунда, все инициализировано. Никаких ага.)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841563
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Даже цели этого действа не прнимаю. У нас, что, из экзешника нельзя поток создать и внутри. длл вызвать?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841564
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADimitry SibiryakovАга, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам. Ерунда, все инициализировано. Никаких ага.)а что за ошибку тогда обсуждаем?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841567
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpа что за ошибку тогда обсуждаем? почитайте тему с начала, повторяться не буду. И кто сказал, что где-то ошибка?
Здесь надо не ошибку искать, а думать, как писать в БД через одно соединение из разных потоков.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841579
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADimitry SibiryakovАга, вот она, базовая ошибка архитектуры, приводящая к гонкам потоков и обращению к ещё не
инициализированным объектам. Ерунда, все инициализировано. Никаких ага.)
Я тоже к этому диагнозу склоняюсь. Не там ты ошибку ищешь.

Ты пойми что если бы ты корректно вызывал SQLite, то получал ошибки так как задумано разработчиками SQLite, а не исключения от ОС.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841583
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAдумать, как писать в БД через одно соединение из разных потоков.ого. ТЗ уже сменилось.
Через одни ворота это просто, но не практично. Почему не через 10 соединений?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841586
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
1. Два потока к одному ресурсу = ставим критическую секцию.
2. У тебя гуи в базу не пишет. Значит если нет ошибки, то в базу пишет ОДИН фоновый поток.
Опять гадаем на кофе.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841589
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ тоже к этому диагнозу склоняюсь. Не там ты ошибку ищешь.
Ты пойми что если бы ты корректно вызывал SQLite, то получал ошибки так как задумано разработчиками SQLite, а не исключения от ОС. Ну, хорошо.
Две идентичные функции в одном классе (cDB) пишущие в БД и вызываемые из разных потоков. Обе функции видят функциональность класса. Одна функция стабильно пишет в БД, другая, в другом потоке, стабильно не видит указатель sqlite *db; - уберем работу с базой, и она будет штатно выполняться. Разница только в том, что инициализация класса, БД и вызов 1-й функции производится в одном потоке, а вызов 2-й функции в другом. Если бы они были в разных адресных пространствах, то и класс cDB второй поток тоже бы не видел, но он его и его переменные видит, кроме указателя на БД.
И как можно некорректно вызвать Sqlite? - Open, и далее, либо exec(), либо prepare(). Но опять, функции сейчас сделаны примитивней некуда, и абсолютно идентичны.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841594
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpого. ТЗ уже сменилось.
Через одни ворота это просто, но не практично. Почему не через 10 соединений? Читайте доки на Sqlite - такая возможность есть без каких либо побочных эффектов. В нашем случае пока им даже неоткуда взяться.))
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841596
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAРазница только в том, что инициализация класса, БД и вызов 1-й функции производится в
одном потоке, а вызов 2-й функции в другом.

И вот этот вызов выполняется раньше, чем первый поток дойдёт до инициализации указателя.
Поскольку ничто не гарантирует очерёдности их выполнения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841597
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, еще раз, это ерунда.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAэто ерунда.

Это реальность многопоточного программирования, детка.
Пока в одном потоке выполняется sqlite* db = sqlite_init(), второй поток уже доходит до
sqlite_exec(db) и получает ещё непроинициализированный db.

Пока ты этого не поймёшь - не суйся в потоки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841607
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharpого. ТЗ уже сменилось.
Через одни ворота это просто, но не практично. Почему не через 10 соединений? Читайте доки на Sqlite - такая возможность есть без каких либо побочных эффектов. В нашем случае пока им даже неоткуда взяться.))сказал тот кто пришел с побочкой.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841608
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, еще раз - ахинея.
вывод в приложениии - ОК, ошибка, ошибка, ошибка, ... ОК, ошибка, ....., ОК.
ОК - запись в БД произведена. Ошибка (что-то там - unknown unhandler....) - не видит указателя на БД. Где вы здесь увидели неинициализированную БД?
Сейчас пока вообще все сломал.)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841614
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADimitry Sibiryakov, еще раз, это ерунда.
YUBAЕсли бы они были в разных адресных пространствах,ты только про адресное в курсе?
А про стек потока?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841615
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADimitry Sibiryakov, еще раз - ахинея.красным напиши. Или тут шрифт побольше делают дети.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841616
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAСейчас пока вообще все сломал.)ты не торопись. Завтра залогируй и приходи.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841624
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, там логировать нечего все известно с точностью до оператора prepare() или любого другого обращения к db. Ниче нового, кроме того, что указателя нет мы не увидим, а это и так известно.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841628
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpты только про адресное в курсе?
А про стек потока? Точно, угадал. У меня вообще другая специальность и это не программирование.)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841632
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharpты только про адресное в курсе?
А про стек потока? Точно, угадал. У меня вообще другая специальность и это не программирование.)ну тогда перед глобальным указателем на базу попробуй поставить
volatile
Чтобы компилятор ее в стек не переместил.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841633
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAтам логировать нечего все известно ся например не понял, почему 2 потока, если один для гуи но не походов же в базу?
В базу ехе фоновый создает. Так?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841634
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharpты только про адресное в курсе?
А про стек потока? Точно, угадал. У меня вообще другая специальность и это не программирование.)

вы мент?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841635
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
У тебя указатель на базу NULL.
Значит надо кусок кода инициализации логи с id потока.
Они глобальный pointer одновременно ставят?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841642
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAспециальность
Просто терминология странная с этим словом "не видит")))) LOL
Ничего личного.
assert("не видит") ;н
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841652
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADimitry Sibiryakov, еще раз - ахинея.
вывод в приложениии - ОК, ошибка, ошибка, ошибка, ... ОК, ошибка, ....., ОК.
ОК - запись в БД произведена. Ошибка (что-то там - unknown unhandler....) - не видит указателя на БД. Где вы здесь увидели неинициализированную БД?
Сейчас пока вообще все сломал.)Вы код который выводит это самое "что-то там - unknown unhandler...." и что перед этим делается покажите.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841654
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneВы код который выводит это самое "что-то там - unknown unhandler...." и что перед этим делается покажите.
Уже показывал, любое обращение к БД - _exec() или _prepare(), после чего выбрасывается из функции. Выводит не мой код, выводит приложение к которому подключена ДЛЛ, по собственной инициативе.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841656
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA Выводит не мой код, выводит приложение к которому подключена ДЛЛ, по собственной инициативе.А вы с помощью плясок с бубном пытаетесь исправить ошибку в чужом коде, которого не видите? Ну удачи.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841660
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone, плевать мне, есть у них ошибки, нет у них ошибок. Мне в любом случае работать с ним надо.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841666
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAУже показывал,еще раз покажите
YUBAВыводит не мой код,
Дак показывали или не можете или не хотите?
Троичная логика)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841668
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, см. предыдущие страницы темы.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841669
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharp, см. предыдущие страницы темы.ну ожидайте ответов, программист)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841671
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, а я и не жду.)) Пока все мои темы на форуме решались самостоятельно. Но, тем не менее, обсуждение полезно, отбрасывается множество версий.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841674
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Блин, ну логика то у вас должна быть?
... Решались самостоятельно, но версии отбрасывались форумом))).
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841675
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, здесь пока нет рабочих версий.)) Есть, в основном демагогия.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841676
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharp, здесь пока нет рабочих версий.)) Есть, в основном демагогия.галстук съешь потом?
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841677
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, в этой теме лишь 2 человека что-то реально думают. Остальные пока надувают щеки и делают умный вид.)) Вы, в том числе.)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841680
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Ваше мнение очень важно для нас (с)
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841682
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, до свидания. Не понял сразу, что вы пофлудить пришли.
...
Рейтинг: 0 / 0
Sqlite в многопоточной программе.
    #39841686
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPetroNotC Sharp, до свидания. Не понял сразу, что вы пофлудить пришли.это у тебя любимая отговорка, когда надо всего то null в переменной найти.
Отпишитесь потом)
Удачи!
Модератор: Закрыто
...
Рейтинг: 0 / 0
85 сообщений из 85, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Sqlite в многопоточной программе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]