![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Общий доступ к файлам [D5]
Павел © (2004-10-27 21:47:00)Есть программа, обрабатывающие файлы, а есть программа генерящая эти файлы.
Собственно вопрос: могут ли возникнуть конфликты между программами?
Defunct (2004-10-27 23:41:00) [1]Rouse_ © (27.10.04 23:28) [7]
Не помимаю что в этом смешного?
> А как узнать это время? По таймеру?
Да по таймеру. Так даже Ethernet CSMA-CA коллизии предотвращает.
> А если писатель опять захотел туда записать?
Тогда придется ждать до тех пор пока писатель запишет все, что хотел записать.
Rouse_ (2004-10-27 23:28:00) [2]> "Читатель" обрабатывает ошибку при открытии файла и пытается
> его читать позже - через некоторое время.
А как узнать это время? По таймеру? ;)
А если писатель опять захотел туда записать? ;)
Rouse_ (2004-10-27 23:26:00) [3]> [5] panov © (27.10.04 22:08)
Да вот те здрасте, а ктож говорит про "для каждого файла"?
Одна же программа генерит. Не будет же она генерить одновременно все эти файлы?
Соответственно блокируем доступ к файлу на момент генерации, потом блокируем момент его обработки...
panov (2004-10-27 22:08:00) [4]>Rouse_ © (27.10.04 21:52) [1]
Если использовать синхронизацию, то ничего не будет.
CreateMutex... и т.п.
К сожалению, для каждого файла из каталога со 100000 файлов мьютекс не создашь-)
panov (2004-10-27 22:00:00) [5]>Павел (27.10.04 21:47)
Кроме коллизий при одновременном доступе к файлу может возникнуть еще такая ситуация: первая программа пишет файл с DENY_SHARE_NONE(например). Не дожидаясь окончания записи вторая программа читает файл, и получает искаженную информацию.
Для решения такой проблемы нужно выполнить следующие условия:
1. "Писатель" открывает файл на все время записи в исключительное использование.
2. "Читатель" обрабатывает ошибку при открытии файла и пытается его читать позже - через некоторое время.
Павел (2004-10-27 21:57:00) [6]А если доступен код только одного приложения?
Gero (2004-10-27 21:55:00) [7]
> могут ли
Могут.
Rouse_ (2004-10-27 21:52:00) [8]Если использовать синхронизацию, то ничего не будет.
CreateMutex... и т.п.