Что произойдет, если два COM-класса без модели потоков реализованы на одном внутрипроцессорном COM-сервере? - PullRequest
1 голос
/ 29 марта 2010

Рассмотрим ситуацию.У меня есть встроенный COM-сервер, который содержит два класса COM.Оба класса помечены в реестре как «модель без потоков» - значение «ThreadingModel» просто отсутствует.Оба класса читают / записывают один и тот же набор глобальных переменных без какой-либо синхронизации.

Насколько я знаю, «модель без потоков» заставит COM запретить одновременный доступ к одному и тому же или разным экземплярам одного и того же класса разнымиthreads.

Будет ли COM предотвращать одновременный доступ к экземплярам двух вышеупомянутых различных классов?Нужна ли синхронизация при доступе к глобальным переменным из двух разных классов COM в этой ситуации?

1 Ответ

2 голосов
/ 30 марта 2010

Когда ThreadingModel отсутствует, по умолчанию используется Main STA или Legacy STA. Все устаревшие компоненты всегда создаются в этой устаревшей STA. Для более подробной информации, я бы порекомендовал прочитать http://www.codeproject.com/kb/com/CCOMThread.aspx

...