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

Вниз

Менеджер памяти от Борланд   Найти похожие ветки 

 
panov ©   (2003-05-22 10:54) [0]

Не разбирался ли кто с принципами работы BorlandMM?

Если да, то натолкните на мысль, как возможно реализовать общий менеджер памяти для основного потока и DLL.


 
Игорь Шевченко ©   (2003-05-22 11:21) [1]

Журнал RSDN Magazine, последний (вроде) номер за прошлый год, статья Mystic"a - довольно подробная. На сайте rsdn.ru


 
rounin   (2003-05-22 11:25) [2]

На счет принципов работы BorlandMM - в RDSN #2 2002 была статья Mystic"a.



 
panov ©   (2003-05-22 11:33) [3]

Спасибо.


 
Digitman ©   (2003-05-22 11:40) [4]


> panov


а критично ли использование в твоем случае именно borlandmm ?
если нет, то можно, к примеру, задействовать тот же менеджер от MS (в составе msvcrt.dll): мультипоточный доступ в нем предусмотрен изначально, базовые ф-ции практически совместимы c TMemoryManager - malloc(), realloc(), free() достаточно легко встраиваются в Борландовскую шаблонную структуру TMemoryManager


 
rounin   (2003-05-22 11:41) [5]

Игорь Шевченко © (22.05.03 11:21)
:)

Насчёт общего менеджера памяти -
можно, например, попробовать сделать в основной программе и в
длл разные менеджеры памяти, но перенаправляющие
запросы основной куче процесса.
Это только идея, я никогда так не делал и
какие возникнут подводные камни - не знаю.


 
panov ©   (2003-05-22 11:48) [6]

>Digitman © (22.05.03 11:40)

Как раз и не хочу использовать BorlandMM.
Да и вообще использовать другие менеджеры.

Хочу разобраться, сложно ли сделать самому такой менеджер и стоит ли овчинка выделки...


 
Digitman ©   (2003-05-22 12:18) [7]


> panov


может, и не так уж и сложно, но уж точно, что "овчинка выделки.."
я бы на твоем месте присмотрелся к msvcrt.dll

тем паче, что, к примеру, многие прогр.продукты, допускающие расширение своей функц-ти за счет подключаемых библ.модулей, требуют соглашений и умолчаний в использовании именно этого менеджера. Яркий пример - сервер InterBase (и его клоны) позволяет подключать пользовательские библ.ф-ции (UDF), в которых для возврата результата допускается аллокировать память вызовом msvcrt.malloc(). При соответствующих UDF-декларациях на стороне сервера после получения результата ядро сервера освобождает аллокированный блок вызовом msvcrt.free(). Причем вызовы ядром сервера ф-ций пользователя могут происходить (и происходят) в различных кодовых потоках одновременно, и при этом никаких конфликтов и мемликов не происходит.


 
Иван Шихалев ©   (2003-05-22 12:21) [8]

У меня на http://fpc.by.ru/ аналог borlandmm для FPC. С исходниками, естественно.

А вообще, опиши задачу в целом.


 
icWasya ©   (2003-05-22 12:38) [9]

>как возможно реализовать общий менеджер памяти для основного потока и DLL.

1)
пишется DLL (например MyMemo.DLL)
в ней реализуются как мимум три фцнкции
function MyGetMem(Size: Integer): Pointer;
function MyFreeMem(P: Pointer): Integer;
function MyReallocMem(P: Pointer; Size: Integer): Pointer;


2)
пишется юнит, который должен подключаться первым во все проекты (Exe и DLL)
в нём
2.1) проверяется наличие MyMemo.DLL
2.2) заменяется стандартный менеджер памяти на функции, взятые из MyMemo.DLL
как это делается - прсмотреть в ShareMem.Pas

собственно всё

как будут реализованы MyGetMem,MyFreeMem,MyReallocMem- дело вкуса
скорей всего в BorlandMM.DLL используется стандартный менеджер памяти

идея проста - не использовать встроеный в приложения менеджер памяти,
а использовать внешний - один на все DLL и Exe процесса.


 
MBo ©   (2003-05-22 12:49) [10]

http://www.optimalcode.com/memmgr.htm


 
Anatoly Podgoretsky ©   (2003-05-22 13:22) [11]

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Memory/index.html&file_id=MemMan



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
8-26612
_Alex
2003-02-27 03:24
2003.06.09
Работа с графикой


3-26342
jack100
2003-05-19 10:42
2003.06.09
У кого есть опыт работы с ExpressQuantumGrid?


14-26772
Jaxtor
2003-05-23 11:30
2003.06.09
Функция преобразования десятичного числа в двоичное


14-26728
Gluk_v_2.0.1
2003-05-22 13:19
2003.06.09
Сайт


6-26635
sapsi
2003-04-09 10:46
2003.06.09
Обработка входящих сообщений Outlook