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

Вниз

Посоветуйте, какие сложности могут возникнуть   Найти похожие ветки 

 
Sergey Vorobyev   (2004-07-14 13:26) [0]

Привет всем!

Повторяю (Модераторам: я что-то не понял, а почему тему удалили?)

Собираюсь реализовать один алгоритм, но сомневаюсь стОит ли делать реализацию таким образом и стОит ли даже начинать.
Поделитесь опытом, если кто с таким сталкивался.

Суть в следующем.
В одном и том же процессе и потоке два модуля работают с одним и тем же файлом на диске. Оба модуля используют CreateFile, ReadFile, WriteFile для этого.. Но каждый модуль открывает свой Handle для этого файла. Каждый из модулей читает и записывает в файл, осуществляются проверки на конец файла, иногда файл обрезается (SetEndOfFile) и т.п.
Вопрос: Не возникнет ли каких либо конфликтов, блокировок при операциях чтении/записи, или еще каких-нибудь "подводных камней" ?
И чуть не забыл самое главное, операции чтения и записи асинхронные, т.е. используются overlapped структуры.

Спасибо


 
Reindeer Moss Eater ©   (2004-07-14 13:30) [1]

С дисковым файлом асинхронные операции?

Ну а критические секции и объекты синхронизации почему не используются?


 
Sergey Vorobyev   (2004-07-14 13:31) [2]


> С дисковым файлом асинхронные операции?

А что здесь такого, обычное дело


> Ну а критические секции и объекты синхронизации почему не
> используются?

Они в моей программе не нужны


 
MBo ©   (2004-07-14 13:33) [3]

вот представь, что я хочу найти в форуме темы о синхронизации доступа к файлам. Вижу заголовок твоей, автоматически отношу ее к мусору типа "Пацаны! Памагите!". Стоит ли удивляться, что тема удалена?

http://www.delphimaster.ru/forums.shtml#rule


 
Reindeer Moss Eater ©   (2004-07-14 13:36) [4]

А что здесь такого, обычное дело

Надо ОС указывать в вопросе.
Что бы обычные дела были обычными для всех.


 
Reindeer Moss Eater ©   (2004-07-14 13:37) [5]

1.
Посоветуйте, какие сложности могут возникнуть


2.
> Ну а критические секции и объекты синхронизации почему не
> используются?

Они в моей программе не нужны


Странный ты какой-то.


 
Sergey Vorobyev   (2004-07-14 13:39) [6]


> 3] MBo ©   (14.07.04 13:33)

Так это вы ее :(

Я вообще-то не согласен, т.к. вопрос не совсем о синхронизации доступа к файлам..

> к мусору типа "Пацаны! Памагите!".

не "помогите", а посоветуйте

Но слово мОдера закон..

По вашим словам это так просто, тогда сами бы хоть ответили, но видимо, просто никому нечего сказать (не в обиду всем)..


 
Думкин ©   (2004-07-14 13:42) [7]

> [6] Sergey Vorobyev   (14.07.04 13:39)

Он вроде не модератор, но правила хнает.
Тему ветки надо называть соответственно и все.
Очень часто народ судит о содержимом по сабжу. Твой сабж - мусор, равно как и мой пост. Ясно?


 
Reindeer Moss Eater ©   (2004-07-14 13:43) [8]

не совсем о синхронизации доступа к файлам..
Конечно не совсем.
Прочитай о смещениях и перемещении указателя при WriteFile с использованием Overlapped и без.
Есть отличия.

иногда файл обрезается


 
Sergey Vorobyev   (2004-07-14 13:43) [9]

Ключевыми здесь являются слова: асинхронно, в одном процессе и одном потоке, каждый открывает свой Handle..

Если бы например доступ был в разных потоках (Threads), то предполагаю, было бы все намного сложнее, если бы модули работали с одним Handle, то было бы намного проще и т.п.
Прошу обратить внимание именно на ключевые слова


 
Reindeer Moss Eater ©   (2004-07-14 13:45) [10]

Ключевые слова асинхронно и один и тот же файл
Прошу обратить внимание именно на ключевые слова


 
Sergey Vorobyev   (2004-07-14 13:46) [11]


> Твой сабж - мусор

Согласен в какой-то степени.
Честно говоря долго думал, как же назвать тему чтобы отразить суть, но не придумал.. Если бы знал, что такая реакция будет, то написал бы хотя бы что-нибудь типа "подводные камни при асинхронном доступе к файлам", хотя это не отразило бы суть вопроса.
Так что не обижайтесь..


 
Reindeer Moss Eater ©   (2004-07-14 13:47) [12]

Это если не мучать тебя вопросами зачем одному потоку одного процесса два хендла одного и того же файла.


 
Reindeer Moss Eater ©   (2004-07-14 13:49) [13]

Твоя идея мне напоминает периодически возникающие темы про вызовы синхронного метода в OnClick таймера.


 
Sergey Vorobyev   (2004-07-14 13:51) [14]


> зачем одному потоку одного процесса два хендла одного и
> того же файла.

Это связано с тем что,
два разных модуля (про это я писал в 1 посте) открывают этот файл одновременно (например в основной проге и в dll или в двух юнитах). Соответственно у каждого текущий указатель будет свой.. И каждый работает сам по себе..


 
Sergey Vorobyev   (2004-07-14 13:55) [15]

Модераторам:
Если вопрос действительно глупый, или нет ответа, или обсуждение пойдет так и дальше, то нет смысла, удаляйте ветку..
Эх:(


 
Reindeer Moss Eater ©   (2004-07-14 13:56) [16]

Представим что мальчику в школе задали написать сказку про белого бычка на одном листе бумаги.
Пришел он домой, сел за стол.
Заходит мама (основной поток) и говорит парню: пиши сказку!. А сама выходит из комнаты  (writefile с оверлаппед)
Парень начинает писать (асинхронная операция записи)
Основному потоку (маме) взгрустнулось, она снова заходит в комнату к сыну и говорит: "Пиши сказку!" (сама уходит)
Парень бросив все начинает писать снова по тому же листу (асинхронная операция записи)
Основному потоку (маме) взгрустнулось, она снова заходит в комнату к сыну и говорит: "Пиши сказку!" (сама уходит)
и так далее....


 
Reindeer Moss Eater ©   (2004-07-14 13:57) [17]

Это связано с тем что два разных модуля

два разных модуля существуют пока ты не нажал F9.
После этого никаких модулей вообще нет.
Есть потоки и процессы.


 
Sergey Vorobyev   (2004-07-14 14:00) [18]


> писать снова по тому же листу

C этим все нормально, если будет затираться, это мне как раз и нужно, чтобы второй модуль мог затереть то, что написал первый.
Главное, что меня интересует, чтобы не было каких-нибудь конфликтов или блокировок (deadlocks)..


 
Sergey Vorobyev   (2004-07-14 14:02) [19]


> два разных модуля существуют пока ты не нажал F9.
> После этого никаких модулей вообще нет.
> Есть потоки и процессы.

Да согласен я с этим!
Для процесса не существует, а для команды разработчиков - существует


 
Reindeer Moss Eater ©   (2004-07-14 14:04) [20]

Дурь это.
Вот что я скажу.


 
Sergey Vorobyev   (2004-07-14 14:07) [21]


> Дурь это.
> Вот что я скажу.

Все посты со 2 до 20 можно удалить, а 20-й сделать ответом на вопрос :)


 
Reindeer Moss Eater ©   (2004-07-14 14:08) [22]

Да согласен я с этим!
Для процесса не существует, а для команды разработчиков - существует


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


 
han_malign ©   (2004-07-14 14:09) [23]

...не стОит...не стОит...
- тогда уж сразу файл мусором забивай - проще, а результат одинаковый...



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

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

Наверх




Память: 0.53 MB
Время: 0.026 c
14-1089022952
CrazyHacKeRs
2004-07-05 14:22
2004.07.25
Раздача лицензий от MicroOlap до 05.07.2004


1-1089125866
DDDeN
2004-07-06 18:57
2004.07.25
TrackBar как в регуляторе громкости


4-1086041485
Chlavik
2004-06-01 02:11
2004.07.25
WaitCommEvent


6-1085565232
Said
2004-05-26 13:53
2004.07.25
Список компьютеров сети


14-1089192896
Vlad Oshin
2004-07-07 13:34
2004.07.25
Чем прочитать файл? Прислали акт, непойму в чем смотреть.