Cntm.ActiveObjects


Подробное описание

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

Активные объекты имеют свои собственные потоки выполнения.

Основой активного объекта является класс Cntm::ActiveObject, выполняющий операции по созданию потоков активного объекта и их автоматическому завершению при уничтожении объекта. Активные объекты являются ссылочными объектами. Важной особенностью активных объектов является то, что поток активного объекта не хранит ссылок на сам объект (в отличие от асинхронных процедур), т.е. работа потока не препятствует уничтожению объекта. Когда на объект не осталось ссылок, он посылает всем своим потокам сигнал завершения и ожидает их завершения. Только после завершения всех потоков будут вызваны деструкторы, а для классов ...RefBaseEx - методы OnReleaseInstance().

Класс Cntm::ActiveObject является основой, но не может служить базовым классом, т.к. не содержит реализации подсчета ссылок. Для создания класса активного объекта он должен быть унаследован от одного из четырех базовых классов: Cntm::ActiveRefBase, Cntm::ActiveRefBaseEx, Cntm::ActiveSynchroRefBase или Cntm::ActiveSynchroRefBaseEx. Первые два объединяют свойства активных объектов с соответствующей реализацие подсчета ссылок, вторые - добавляют к этому средства синхронизации.

Поток можно создавать либо через средства Cntm::ActiveObject либо с помощью класса потока активного объекта - Cntm::ActiveThread. Поток активного объекта является единицей выполнения (наследует Cntm::ExecutionUnit), поэтому взаимодействие с потоком происходит через хэндл потока - класс Cntm::ActiveThreadHandle. Хэндл позволяет остановить поток до уничтожения активного объекта.

В потоковых методах для защиты от перехода объекта в удаляемое состояние следует применять Using-объекты - Cntm::Using, Cntm::UsingSync и Cntm::UsingReentrantSync . Последние 2, а также классы Cntm::Sync и Cntm::ReentrantSync могут применяться активными синхрообъектами для входа в свое синхропространство.


Классы

class  Cntm::ActiveObject
 Активный объект - это объект, имеющий свои собственные потоки выполнения. Подробнее...
class  Cntm::ActiveRefBase
 Базовый класс для активных объектов. Подробнее...
class  Cntm::ActiveRefBaseEx
 Базовый класс для активных объектов. Подробнее...
class  Cntm::ActiveSynchroRefBase
 Базовый класс для активных объектов. Подробнее...
class  Cntm::ActiveSynchroRefBaseEx
 Базовый класс для активных объектов. Подробнее...
class  Cntm::ActiveThread
 Класс потока активного объекта. Подробнее...
class  Cntm::ActiveThreadHandle
 Хэндл потока активного объекта. Подробнее...
class  Cntm::ActiveThreadTerminatingSignal
 Класс сигнала, использующегося в качестве исключения при завершении потока активного объекта. Подробнее...


SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3