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

Вниз

Handle s   Найти похожие ветки 

 
1987   (2009-11-11 11:30) [0]

каково максимально возможное количество десткрипторов можно создать в рамках приложения.


 
clickmaker ©   (2009-11-11 11:32) [1]

десткрипторов чего?


 
1987   (2009-11-11 11:38) [2]


> десткрипторов чего?


ну ,например, того же FileStream"а. P.S. попробывал тут создать 78 500 TFileStream"ов - в результате появилась ошибка - недостаточно квот и повисла вся винда, поэтому стало интересно.


 
Сергей М. ©   (2009-11-11 11:40) [3]


> попробывал тут создать 78 500 TFileStream"ов


Это что, спортивный интерес ? Испытание Винды на прочность-вшивость ?
каков практический смысл в таком бешеном количестве одновременно существующих объектов ?


 
1987   (2009-11-11 11:51) [4]

использую компонент для аккумуляции множества файлов в одном (в компоненте имеется возможность использовать транзакции). В рамках транзакции приходится открывать каждый из множетва файлов, для этого создаю и передаю FileStream. Удалять его сразу после передачи нельзя. Это можно делать только после подтверждения транзакции. Поэтому стало интересно.


 
Сергей М. ©   (2009-11-11 11:56) [5]


> Удалять его сразу после передачи нельзя


Кого "его"  ?


 
Дмитрий Белькевич   (2009-11-11 12:55) [6]


>  Поэтому стало интересно.


У разных операционок (имеется в виду windows"ы) разные ограничения на количество одновременно открытых файлов. Ограничения, насколько я помню, рамками приложения не ограничены.

Пока что смутно представляю ситуацию необходимости одновременного открытия 78 500 файлов.


> использую компонент для аккумуляции множества файлов в одном
> (в компоненте имеется возможность использовать транзакции).
>


Если компонент одновременно открывает такое количество файлов - то имеет смысл от него отказаться, он написан неверно. Какие бы там "транзакции" он не использовал. И, вообще, что значит "имеет возможность использовать"? Никаких транзакций в windows"ах нет (маловероятно, что речь про транзакции ntfs). Транзакции приложения "придумывают" себе сами.


 
Riply ©   (2009-11-11 13:24) [7]

>  Поэтому стало интересно.

Если исходить из структуры таблицы, то
максимальное кол-во Handle`ов процесса выражается примерно так:
(PAGE_SIZE div SizeOf(HANDLE_TABLE_ENTRY)) * (PAGE_SIZE div SizeOf(PHANDLE_TABLE_ENTRY)) * (PAGE_SIZE div SizeOf(PHANDLE_TABLE_ENTRY))
Т.е. что-то типа: 512 * 1024 * 1024.
(больше просто в таблицу не влезет :) )

P.S.
Для проверки структуры таблицы, созадавала 512 * 512 + 16 Handle`ов - никто и не пискнул :)


 
Игорь Шевченко ©   (2009-11-11 13:41) [8]

Это неправильный подход - исследовать макисмальное количество именно Handles - они нафиг никому не сдались.

Во-первых, каждый созданный объект занимает какое-то место в памяти, как в ядерной, так и в прикладной. Объем памяти и там и там ограничен, гораздо больше шансов получить ошибку из-за этого ограничения. Во-вторых, существуют квоты на использование ядерной памяти процессом.

В-третьих, что-то явно в консерватории неправильно.



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
2-1257909781
igan
2009-11-11 06:23
2009.12.27
Типы данных C, VB -> Delphi


15-1256372721
POOP
2009-10-24 12:25
2009.12.27
Paint.Net залитый прямоугольник


15-1256320073
POOP
2009-10-23 21:47
2009.12.27
Помогите с Latex


15-1256851810
Юрий
2009-10-30 00:30
2009.12.27
С днем рождения ! 30 октября 2009 пятница


15-1256703324
Омлет
2009-10-28 07:15
2009.12.27
Занимательное программирование :)