Для меня здесь есть некоторая двусмысленность. Когда вы говорите о блокировке, вы ссылаетесь на блокировку БД или блокировку потоков?
Если вы ссылаетесь на
- Какой-то DB Lock, который блокирует файл на диске - Да
- Thread Locking, который зависит, если параллельный доступ от
-Потоков из того же процесса, то да, Монитор может добиться цели.
-Если параллелизм происходит из нескольких процессов в одном блоке, тогда Mutex может работать.
-Если параллелизм осуществляется с нескольких отдельных серверов, то НИКАКИЕ решения для блокировки потоков не будут работать.
Но вы правы, с файловой базой данных без движка для управления одновременным доступом вам нужно будет осторожно обращаться с одновременным доступом.
Обновление-1:
Для простого сценария single server
, single application
, **no** web garden
вы можете написать свой слой доступа к данным, чтобы ограничить одновременный доступ к файлам DBF, используя lock
(синтаксический сахар для монитора). Но сегодняшнее маленькое веб-приложение превращается во что-то, что нужно масштабировать и масштабировать, тогда ваше решение для блокировки должно развиваться вместе с ним.
Вы также должны знать, что любое решение, которое вы выберете, оказывает существенное влияние на то, насколько хорошо ваше приложение масштабируется с дополнительной нагрузкой. В случае, если лучшие безсерверные базы данных, такие как Sqlite, сильно страдают от производительности, когда им приходится иметь дело с одновременным доступом из нескольких потоков.