Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вопрос о загрузке библиотек


Автор: Vadimman 6.5.2009, 21:18
Всем доброго времени суток! Суть вопроса вот в чем. Существует Web- сервис,  взаимодействующий с клиентом по soap протоколу. Библиотека сервиса Serv.dll  вызывает библиотеку Funcs.dll которая вызывает еще несколько библиотек Lib1,Lib2,... libn.  эти библиотеки пользуются некоторой общей областью памяти заложенной в SharedMem.bpl. Когда эти библиотеки вызываются из Win приложения (выполняющего аналогичный функционал, что и сервис, но установленного на локальной машине)  то все хорошо - мы запустили 10 раз exe-шку у нас отвелось 10 областей в памяти, которые друг друга не видят и SharedMemory прекрасно выполняет свою функцию некого посредника между работающими библиотеками, т.к для такой SharedMemory при работе существует всего один пользователь.. В случае же сервиса все обстоит иначе - библиотека Serv.dll одна  и к ней обращается куча пользователей. И когда несколько пользователей работают одновременно то получается они работают с одной и той же областью памяти, т.е если под User1 метод из Lib1 поместил что-то в SharedMemory то user2 каким-либо другим методом из любой другой библиотеки может запросто это все затереть... Вот.. надеюсь суть проблеммы изложил не очень коряво:) А вопрос собственно вот в чем нельзя ли сделать так чтобы при каждой загрузке Funcs.dll она загружалась в отдельную область памяти и используя sharedMem.bpl  и другие библиотеки ничего бы не знала о том, что другой пользователь так же загрузил эту библиотеку и друг другу бы они не мешали...

Автор: lukash256 7.5.2009, 10:51
а пусть твой сервис запускает фоновые приложения с собственной областью памяти для каждоко юзера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)