Совместное использование файла несколькими процессами [Perl] - PullRequest
4 голосов
/ 17 декабря 2011

У меня есть приложение, которое обновляет файл CSV (один), CSV обновляется случайным образом из нескольких процессов, и я думаю, если два процесса попытаются обновить его (добавить строку ...) в одно и то же время,некоторые данные будут потеряны, я думаю, или перезаписаны (?).

каков наилучший способ избежать этого?

спасибо,

Ответы [ 2 ]

6 голосов
/ 17 декабря 2011

Используйте Perl DBI с драйвером DBD :: CSV для доступа к вашим данным;это позаботится о вас.(Если вы не используете Windows 95 или старую Mac OS.) Если вы позже решите переключиться на СУБД, вы будете хорошо подготовлены.и будет хорошо, конечно.

0 голосов
/ 17 декабря 2011

Если вы хотите иметь простой и ручной способ позаботиться о блокировке файлов.

1) As soon as a process opens the csv, it creates a lock.
  (Lock can be in the form of creating a dummy file. The process has to delete 
  the file(lock) as soon as it is done reading/updating the csv)
2) Have each process check for file lock before trying to update the csv.
 (If dummy file is present, some process is accessing the csv, 
  else it can update the csv)
...