Delphi COM EXE и Threading - PullRequest
       27

Delphi COM EXE и Threading

0 голосов
/ 23 сентября 2010

Просто хочу подтвердить это с экспертами COM / DCOM ...

У меня есть Delphi COM EXE, который работает на сервере (многопоточность - это Single Apartment), и другая копия того же EXE-файла запускается на том же сервере (сервер, на котором установлено 2 процессора с двухъядерным процессором, поэтому диспетчер задач отображает 4 отдельных графика) будут ли они по очереди ждать друг друга или будут работать на отдельных ядрах?

Я где-то нашел пост, в котором говорилось

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

1 Ответ

4 голосов
/ 23 сентября 2010

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

...