Вход


Главная страница >> Учебный процесс >> Конспекты >> Delphi. Поддержка технологий COM >> Основы OLE >> Модели потоков

[Назад]    [Содержание ]    [Вперед]

  


Модели потоков


Каждый СОМ-объект работает с отдельной моделью потоков, которая определяет, каким образом объект может существовать в многопоточной среде. Когда СОМ-сервер зарегистрирован в системе, каждый из СОМ-объектов. содержащихся в этом сервере, должен зарегистрировать поддерживаемую им модель потоков. Для СОМ-объектов, созданных в Delphi, модель потока выбирается при выполнении последовательности действий мастеров Automation, ActiveX control или СОМ objects, тем самым определяя, как будет зарегистрирован элемент управления. Существуют следующие модели потоков СОМ:

? Единичная. Весь СОМ-сервер выполняется в одном потоке.

? Комната, также известная как однопоточная комната [single-threaded apartment-STA). Каждый СОМ-объект выполняется в контексте собственного потока, и в отдельном потоке могут выполняться несколько экземпляров одинаковых типов СОМ-объекта. В результате любые данные, распределенные между экземплярами объектов (такие как глобальные переменные), должны быть при необходимости защищены синхронизирующим потоком объектов.

? Свободная, также известная как многопоточная комната (multithreading apartment- МТА). Клиент может вызвать метод объекта в любом потоке и в любое время. В этом| случае СОМ-объект должен защищать свои данные при одновременном доступе из нескольких потоков.

? Обе. Поддерживаются обе модели потоков (комната и свободная).

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



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017