На этом шаге мы рассмотрим функционирование модели разделенных потоков.
Модель разделенных потоков (apartment-threading model) позволяет всем клиентам получать прямой указатель на интерфейс компонента, не прибегая к услугам представителя/заглушки. Отделение (apartment) - это логическая структура для параллельной работы потоков, которая создается при вызове потоком API-функции CoInitializeEx() для инициализации библиотеки СОМ. Отделение связывается с одним или несколькими потоками и одним или множеством СОМ-объектов. Поскольку все объекты отделения поддерживают модель разделенных потоков, все потоки в этом отделении получают прямые указатели интерфейса на все его объекты.
Терминология отделений и разделенных потоков некоторым кажется довольно запутанной, потому что существуют два типа отделений:
Различие между ними таково:
Процесс может содержать любое число STA-отделений (в каждом из которых имеется единственный поток), но всего лишь одно МТА-отделение - с любым количеством потоков.
На следующем шаге мы рассмотрим однопоточные отделения.