Форум: "Основная";
Текущий архив: 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