Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];
ВнизСовместный доступ к файлу. Найти похожие ветки
← →
Brand (2002-09-05 23:02) [0]У кого есть какие предложения по наиболее лучшему способу организации совместного доступа к файлу? К примеру у меня 1000 (а может и больше) процессов, которые одновременно хотят что-нибудь записать в файл. Есть две мысли:
1. В каждом процессе организовать цикл из 10 повторений попыток открытия на запись. Но этого может и не хватить.
2. Организовать бесконечный цикл, пока не откроется файл для записи. Но неизвестно, как в этом случае поведет себя операционка.
Ваши предложения.
← →
Gene Green (2002-09-06 00:01) [1]А если организовать некий массив (стэк, очередь)? И другим процессом брать поочередно задачи и работать с файлом?
← →
nimble (2002-09-06 06:32) [2]Попробовать FileMapping!
← →
MBo (2002-09-06 06:41) [3]TMultiReadExclusiveWriteSynchronizer
← →
ЮЮ (2002-09-06 07:35) [4]> 1000 (а может и больше) процессов
И при меньшем количестве переходим на сервера :-))
Пусть каждый пишет в свой файл. А на сервере объединять.
← →
[NIKEL] (2002-09-06 07:42) [5]все пишут в shared memory а когда надо, все это скидываеться на диск
← →
ЮЮ (2002-09-06 07:47) [6]> 1000 (а может и больше) процессов
Не на одном же компе запущено столько процессов. A вы "shared memory" и т.п. Или на одном?
← →
MBo (2002-09-06 07:51) [7]>1000 (а может и больше) процессов
Действительно впечатляет ;)
← →
[NIKEL] (2002-09-06 08:20) [8]на счет >1000 я думаю товарисч погорячился :) я даже и не заметил :)
Можно посоветовать товарищу пересмотреть архитектуру и организацию программы или концепцию, так как из этого ничего хорошего не получится...
потоки хорошо работают когда они независимы. Но они начинают работать непродуктивно, когда они вынуждены синхронизироваться для доступа к общим ресурсам. Блокировка и критические секции отнюдь не добавляют бодрости системе.
Здесь лучше думать как избавиться от потоков или пересматривать форматы данных
← →
Brand (2002-09-06 22:57) [9]А как это "shared memory"???
Просто задача состоит в том, чтобы все процессы имели доступ к некоторой инфе, которую (я так думал) лучше писать/читать в/из файла. Раньше (без процессов) делал все в массиве структур, но надо улучшать проект, т. е. организовать парпаллельную работу большого кол-ва копий программ. Я бы не против на тот-же массив структур, но не знаю как это организовать. Ведь каждый процесс ( не каждый поток в одном процессе!!!) как отдельная программа со своими переменными. А как сделать для них общие переменные?!?!?
← →
MBo (2002-09-07 06:44) [10]CreateFileMapping и далее по хелпу WinSDK
← →
[NIKEL] (2002-09-07 22:05) [11]а зачем сразу разные программы? советую понаблюдать как работает Explorer, открываешь папку, хопа, и у тебя новое окно - но это не новая копия експлорера, это новый поток, т.е. он ловит это дело и добовляет новый процесс к Основному, и все... еще раз подумайте над структурой программы
← →
Brand (2002-09-07 23:01) [12]Да, CreateFileMapping было-бы, наверное неплохо, но все дело в том, что програмлю я в данном случае под FreeBSD, потому и вопрос звучал в общем "Как........".
← →
[NIKEL] (2002-09-07 23:09) [13]хех, с этого и надо было начинать, хотя странно что в вопрос ты поместил D6 и Win2k ;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c