Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
1-1099331941
UDS
2004-11-01 20:59
2004.11.14
Как зациклить MediaPlayer?


6-1094027486
bl4ck_w1nd
2004-09-01 12:31
2004.11.14
комп+модем+телефон


3-1097500706
AleXqwq
2004-10-11 17:18
2004.11.14
MySQL component for Delphi, not trial


14-1098703870
vopros
2004-10-25 15:31
2004.11.14
Сегодня иду на Зенит-ЦСКА.Но немножко не посебе.


1-1098961605
Chlavik
2004-10-28 15:06
2004.11.14
Pointer -> _ContactItem и наоборот




   Наверх