Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.038 c
1-1089358713
Billi
2004-07-09 11:38
2004.07.25
File Access denied


3-1088680527
Miguel1
2004-07-01 15:15
2004.07.25
Использование оперативной памяти при работе с ADO


1-1088730903
Xerx
2004-07-02 05:15
2004.07.25
Иконки


3-1088517715
lamer
2004-06-29 18:01
2004.07.25
MS Sql


14-1089129012
Aplay
2004-07-06 19:50
2004.07.25
Еду в Москву. Подскажите





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский