Метод блокировки COM-объекта STA является дефектом конструкции? - PullRequest
1 голос
/ 07 июня 2011

Скажем, COM-объект создан в потоке STA. Таким образом, все вызовы этого объекта сериализуются в этом потоке. Поэтому, если метод объекта блокируется, все потоки, которые используют этот объект, блокируются.

Таким образом, наличие метода блокировки в COM-объекте STA является дефектом проектирования, которого следует избегать?

Если COM-объект является свободным потоком, можно ли использовать метод блокировки?

Спасибо

1 Ответ

0 голосов
/ 07 июня 2011

Да, объекты в однопоточных квартирах синхронизируются с помощью сообщений, и все вызовы к ним сериализуются таким образом, что для любого такого объекта в любой момент времени может быть вызвано не более одного метода (также ни один метод не может быть вызванболее одного раза в любой момент времени).Это сделано специально для достижения определенной степени безопасности потоков.Сам по себе длительный метод не является большой проблемой, если вы не введете тупик.Да, вызывающие абоненты будут ждать, пока их вызовы не будут выполнены по очереди.

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

...