Re[2]: Множество клиентов на один сервер.
От: Аноним  
Дата: 05.11.01 04:05
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Здравствуйте Аноним, Вы писали:


А>>На сервере есть несколько операций, которые выполняются очень долго, поэтому нужно реализовать некоторое подобие многопоточноти. Как я понимаю, можно использовать Free-Threaded Model (MTA), но чего-то оно не получается. Точнее, если у меня сервер с виде DLL, то несколько потоков, созданных в данном процессе без проблем выполняют параллельно одни и те же методы интерфейса. Но у меня сервер реализован в виде EXE и поэтому каждый клиент — это другой процесс и вызовы серверов почему-то синхронизируется (то есть пока метод выполняется одним из клиентов, то другой клиент не может даже указатель на интерфейс получить). В чем может быть дело?

А>>P.S. Может написать новую фабрику классов и каждый раз при запросе интерфейса создавать новый экземпляр объекта?

VD>Странное дело легаси (гы MS так теперь старые DCOM.EXE-шные сервера называет) вроде как работал неплохо. Тут на код бы взглянуть. В инпроце все может бить совсем сложно, тут нужно смотреть как создаются потоки, как они инициализируются и как маршалятся указатели на интерфейсы.


Никакие потоки не создаются и никакие интерфейсы не маршалятся. Все просто и не интересно: на сервере создается Free Model сервер. Клиент делает CoInitialize[Ex] и CoCreateInstance[Ex], после чего запускается два экземпляра клиента и в результате выходит, что один ждет другого.
А вообще я тут потыкался-потыкался и начинаю понимать, что наверное такое вообще невозможно. Точнее, на такую мысль меня навела MSDN, в которой это очень сумрачно упоминается. Или я не прав? Просвятите пожалуйста или дайте простейший исходник, в котром все работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.