powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Многопоточность, shared cache=on, synchronous=off, read_uncommited=true
4 сообщений из 4, страница 1 из 1
Многопоточность, shared cache=on, synchronous=off, read_uncommited=true
    #37780796
йфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый. Sqlite возвращает странные данные при одновременном чтение и обновление, пседокод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
// Для обоих соединений выставлены опции, указанные в заголовке
Connection readWriteConnection=create_read_write_connection()
Connection readOnlyConnection=create_read_only_connection()

readWriteConnection.ExecSQL
(
  "DROP TABLE IF EXISTS TestTable:\
  CREATE TABLE TestTable (ID INTEGER PRIMARY KEY, SomeText TEXT);\
  INSERT INTO TestTable (SomeText) VALUES ('First');\
  INSERT INTO TestTable (SomeText) VALUES ('Second');\
  INSERT INTO TestTable (SomeText) VALUES ('Third');"
)

// Далее запускаем два потока
// Поток 1 работает
Stmt stmt=readOnlyConnection.CreateAndExecuteStmt("SELECT ID, SomeText FROM TestTable");

// Поток 2 работает
readWriteConnection.ExecSQL("UPDATE TestTable SET SomeText=SomeText+'New' WHERE ID=2");// На самом деле тут запрос с параметрами

// Поток 1 работает
do
{
  std::cout<<stmt.get_column_value_as_int(0)<<"\t"<<stmt.get_column_value_as_text(1)<<std::endl;
}
while( stmt.move_next() )



вывод в итоге следующий(смущает выделенное):
1 First
2 0
3 Third


Есть ли способ заставить работать это более-менее предсказуемым образом? Т.е. меня устроит и получение старых и обновленных данных. Категорически не устроит ожидание при выполнение обновления
...
Рейтинг: 0 / 0
Многопоточность, shared cache=on, synchronous=off, read_uncommited=true
    #37781028
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йфяКатегорически не устроит ожидание при выполнение обновленияЗабудь про SQLite значит.
Многопоточная работа со встраиваемой базой - идиотизм.
...
Рейтинг: 0 / 0
Многопоточность, shared cache=on, synchronous=off, read_uncommited=true
    #37781034
йфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C read-uncommited ожидания нету, т.е. sqlite вполне жизнеспособна без блокировок
...
Рейтинг: 0 / 0
Многопоточность, shared cache=on, synchronous=off, read_uncommited=true
    #37781133
йфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Замена shared-cache на WAL дала нужный эффект. Будут другие предложения -your are welcome
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Многопоточность, shared cache=on, synchronous=off, read_uncommited=true
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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