Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Общий доступ к файлам   Найти похожие ветки 

 
Павел   (2004-10-27 21:47) [0]

Есть программа, обрабатывающие файлы, а есть программа генерящая эти файлы.

Собственно вопрос: могут ли возникнуть конфликты между программами?


 
Rouse_ ©   (2004-10-27 21:52) [1]

Если использовать синхронизацию, то ничего не будет.
CreateMutex... и т.п.


 
Gero ©   (2004-10-27 21:55) [2]


> могут ли

Могут.


 
Павел   (2004-10-27 21:57) [3]

А если доступен код только одного приложения?


 
panov ©   (2004-10-27 22:00) [4]

>Павел   (27.10.04 21:47)

Кроме коллизий при одновременном доступе к файлу может возникнуть еще такая ситуация: первая программа пишет файл с DENY_SHARE_NONE(например). Не дожидаясь окончания записи вторая программа читает файл, и получает искаженную информацию.

Для решения такой проблемы нужно выполнить следующие условия:
1. "Писатель" открывает файл на все время записи в исключительное использование.
2. "Читатель" обрабатывает ошибку при открытии файла и пытается его читать позже - через некоторое время.


 
panov ©   (2004-10-27 22:08) [5]

>Rouse_ ©   (27.10.04 21:52) [1]

Если использовать синхронизацию, то ничего не будет.
CreateMutex... и т.п.


К сожалению, для каждого файла из каталога со 100000 файлов мьютекс не создашь-)


 
Rouse_ ©   (2004-10-27 23:26) [6]

> [5] panov ©   (27.10.04 22:08)
Да вот те здрасте, а ктож говорит про "для каждого файла"?

Одна же программа генерит. Не будет же она генерить одновременно все эти файлы?
Соответственно блокируем доступ к файлу на момент генерации, потом блокируем момент его обработки...


 
Rouse_ ©   (2004-10-27 23:28) [7]

> "Читатель" обрабатывает ошибку при открытии файла и пытается
> его читать позже - через некоторое время.

А как узнать это время? По таймеру? ;)
А если писатель опять захотел туда записать? ;)


 
Defunct ©   (2004-10-27 23:41) [8]

Rouse_ ©   (27.10.04 23:28) [7]

Не помимаю что в этом смешного?

> А как узнать это время? По таймеру?
Да по таймеру. Так даже Ethernet CSMA-CA коллизии предотвращает.


> А если писатель опять захотел туда записать?
Тогда придется ждать до тех пор пока писатель запишет все, что хотел записать.



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
14-1098557901
gn
2004-10-23 22:58
2004.11.14
Драма "альтернативных" браузеров


3-1097758099
star
2004-10-14 16:48
2004.11.14
сортировка


1-1098971775
Константинов
2004-10-28 17:56
2004.11.14
Как выделить часть текста в StringGrid


3-1097649698
alsov1
2004-10-13 10:41
2004.11.14
Как передать результат селекта параметром в процедуру?


14-1098717575
savva
2004-10-25 19:19
2004.11.14
Прививки от гриппа: за и нет.