Re: Синхронизация доступа к файлу.
От: deepredlight  
Дата: 30.01.06 14:50
Оценка:
Здравствуйте, Labutin, Вы писали:

L>Дела сейчас обстоят так.

L>Первая программа на C++.
L>Периодически открывает файл на перезапись fopen ("...", "w") и пишет туда два числа. После чего файл закрывается. Промежутки времени межде записью непредсказуемы.

L>Вторая программа на C# (точнее ASP.NET приложение)

L>Периодически читает содержимое файла.
L>StreamReader sr = File.OpenText("...");
L>int currentStep = Convert.ToInt32(sr.ReadLine());
L>int allSteps = Convert.ToInt32(sr.ReadLine());
L>sr.Close();
L>Основная проблема в том, что может происходить одновременный доступ к файлу Наиболее критична ситуация, когда вторая программа читает файл, а первая в этот момент не может записать, т.к. файл открыт.
L>Как наименьшей кровью разрулить ситуацию?


решение 1:

при открытии блокировать намертво (C# : FileAccess.None в С++ не помню) и просто ждать пока файл не освободится.

решение 2:

использовать переименование файла и через имя файла передавать флаги(используется свойство атомарности операции переименивания)

первая программа смотрит есть ли файл filename.app1.txt, если есть — то открывает и пишет в него нужную инфу и после этого переименовывает в filename.app2.txt

вторая программа работает по такому же принципу только в обратную сторону
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.