Потоковые модели. Многопоточные отделения

   
На этом шаге мы рассмотрим особенности многопоточных отделений.

   
Многопоточные отделения поддерживают модель свободных потоков. От STA они отличаются тем,
что в одном МТА могут находиться несколько потоков. МТА позволяет достичь максимальной
производительности.

   
Все потоки, вызывающие CoInitalizeEx() с параметром COINIT_MULTITHREADED, располагаются
в одном МТА и называются МTA-потоками. В отличие от STA в процессе может
быть только одно МТА. Все вновь создаваемые МТА-потоки попадают в одно и то же МТА.
Важно, что в этом случае не требуется маршалинг между потоками.

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

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

   
На следующем шаге мы рассмотрим указание потоковой модели в реестре.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий