Я пытаюсь расшифровать абзац ниже, взятый из сообщения в блоге здесь , который описывает историю COM в контексте разработки для Visual Studio IDE:
Когда все было собственным кодом C ++, COM гарантировал, что почти все происходило в основном потоке STA (то есть потоке пользовательского интерфейса). Если код, выполняющийся в другом подразделении (например, фоновый поток), вызывает любой из этих компонентов COM, фоновый поток блокирует , в то время как вызов повторяется в основном потоке . Это защитило COM-компонент от необходимости иметь дело с одновременным выполнением , но оставило его открытым для повторного входа ( вызывается при исходящем вызове ). Этот метод работал независимо от того, управлялся ли вызывающий (автоматически) или собственный код (через прокси-заглушку, которую COM генерировал для вызывающего).
Вопросы, которые у меня есть:
Что такое механизм повторного вызова вызова в другом потоке? Вы можете привести пример?
Совпадает ли проблема, упомянутая как «параллельное выполнение», с проблемой безопасности потоков?
Что вызывается при исходящем вызове?
Спасибо.