Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-61375
Sword
2002-07-31 18:28
2002.09.19
Имя компьютера


1-61075
SergeyDN
2002-09-09 11:39
2002.09.19
Как можно из делфей выбрать определённый лист в Excel!


3-60967
Shtukatur
2002-08-28 19:41
2002.09.19
Как сортировать lookup поля?


4-61384
Vadislav Bikov
2002-07-28 12:56
2002.09.19
Перехват сообщений в OutLook


1-61188
Guzz
2002-09-08 13:24
2002.09.19
Глупый такой вопрос





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский