Транзакция гарантирует, что грязные чтения не произойдут? - PullRequest
0 голосов
/ 07 июня 2018

В последнее время я много читаю, и теперь я очень озадачен тем, как работают транзакции и блокировки и как они связаны друг с другом.

При работе с SQLite представьте следующий поток:

  1. начать транзакцию SQLite
  2. запустить оператор выбора для соединения SQLite, чтобы получить значения
  3. , если условие для возвращаемых значений выполнено, перейдите к шагу # 4, в противном случае перейдите кшаг # 5
  4. выполнить обновление
  5. зафиксировать транзакцию SQLite

Если два потока выполняют один и тот же код, есть ли вероятность, что в одном из потоков может получиться то, чтоназывается «грязное чтение», означающее, что между шагом № 3 и шагом № 4 другой поток может запустить обновление (шаг № 4)?

1 Ответ

0 голосов
/ 07 июня 2018

Да, это называется уровнем изоляции: https://www.sqlite.org/isolation.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...