Вопрос тем кто юзает SQLite
От: VladCore  
Дата: 29.07.19 21:53
Оценка:
Кто не в курсе запись в SQLite работает только эксклюзивная, и только чтение из sqlite-базы можно паралельно выполнять.

Кто как решает проблему?

Есть 2 подхода:
1) Retry Pattern, например http://www.thepollyproject.org/
Он так же может использоваться для борьбы с dead-lock-ами в нормальных СУДБ. Ну неплохо как бы, но менее надежно чем второй способ.

2)
Заворачивать блоки чтения в ReadWriterLock на чтение, и блоки кода с записью в БД в ReadWriterLock на запись.
Работает надежно по сравнению с 1м, но для обычных СУДБ не нужно.

Для второго подхода что можно подсмотреть готовое?. Приходит на ум только такой класс MyLock

using(var lockPolicy = MyLock.Readonly)
{
   /// читаем из базы
   if (needWrite)
   {
      lockPolicy.UpgradeToWriting();
      // пишем в БД
   }
}

...

using(MyLock.ReadWrite)
{
   /// пишем в базу
}


Интересует как бы это завернуть в DI майкрософтовский. Если это имеет смысл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.