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