Является базовым классом для хэндлов асинхронных процедур (класс Cntm::AsyncProcHandle) и потоков активных объектов (класс Cntm::ActiveThreadHandle).
Хэндл служит для управления асинхронной процедурой или потоком со стороны создателя единицы выполнения. По сути хэндл является ссылочным указателем на объект единицы выполнения, т.е. пока существует хотя бы один хэндл, связанный с объектом единицы выполнения, этот объект будет существовать.
Хэндл может быть связан с единицей выполнения или нет. Это можно определить через свойство Assigned(). Разорвать связь между хэндлом и объектом единицы выполнения можно методом Unassign(). Также связь разрушается, когда происходит уничтожение хэндла. Значения хэндлов могут быть скопированы друг в друга. В этом случае связь со старым объектом разрывается и производится связь с тем объектом, с которым связан источник.
Сам по себе объект единицы исполнения не доступен. Все управление этими объектами производится через их хэндлы (создание асинхронных процедур и потоков активных объектов производится с помощью статических методов классов Cntm::AsyncProc и Cntm::ActiveThread, которые возвращают хэндлы созданных ими объектов единиц выполнения).
Данный класс является базовым классом хэндла и предоставляет сервис по установке флага принудительного останова - метод Terminate().
Класс поддерживает многопоточность.
См. определение в файле ExecutionUnitHandle.h строка 36
Открытые типы | |
typedef void * | UnitId |
Тип идентификатора единицы выполнения. | |
Открытые члены | |
ExecutionUnitHandle () | |
Конструктор по умолчанию. | |
ExecutionUnitHandle (const ExecutionUnitHandle &Src) | |
Конструктор копирования. | |
ExecutionUnitHandle & | operator= (const ExecutionUnitHandle &Src) |
Оператор присвоения. | |
UnitId | Id () const |
Идентификатор текущей единицы выполнения или NullId(), если хэндл не связан с единицей выполнения. | |
bool | Assigned () const |
Возвращает true, если хэндл связан с единицей выполнения и false - в противном случае. | |
bool | Terminated () const |
Возвращает флаг принудительного останова. | |
void | Unassign () throw () |
Разорвать связь с единицей выполнения. | |
void | Terminate () throw () |
Установить флаг принудительного завершения. | |
Открытые статические члены | |
static UnitId | NullId () |
Специальное значение идентификатора единицы выполнения, означающее ее отсутствие. | |
Защищенные члены | |
ExecutionUnitHandle (const SpecUtils::ExecutionUnitImpl::Ptr &Impl) | |
Защищенный конструктор инициализации хэндла. | |
Защищенные данные | |
SpecUtils::ExecutionUnitImpl::Ptr | impl |
Ссылочный указатель на объект единицы выполнения. |
typedef void* Cntm::ExecutionUnitHandle::UnitId |
Тип идентификатора единицы выполнения.
С помощью идентификаторов можно определить, относятся ли хэндлы к одной и той же единице выполнения или нет.
Тип имеет операторы сравнения, поэтому может использоваться для сортировки. Не имеет конструктора по умолчанию, поэтому при создании переменной этого типа она д.б. явно проинициализирована, например, специальным значением ExecutionUnitHandle::NullId().
Значения идентификаторов могут быть использованы повторно после уничтожения единицы выполнения.
См. определение в файле ExecutionUnitHandle.h строка 47
Cntm::ExecutionUnitHandle::ExecutionUnitHandle | ( | ) | [inline] |
Конструктор по умолчанию.
Создает пустой хэндл, не связанный с единицей выполнения.
См. определение в файле ExecutionUnitHandle.h строка 52
Cntm::ExecutionUnitHandle::ExecutionUnitHandle | ( | const ExecutionUnitHandle & | Src | ) | [inline] |
Конструктор копирования.
Дублирует указанный хэндл.
Src | - дублируемый хэндл. |
См. определение в файле ExecutionUnitHandle.h строка 58
Cntm::ExecutionUnitHandle::ExecutionUnitHandle | ( | const SpecUtils::ExecutionUnitImpl::Ptr & | Impl | ) | [inline, protected] |
Защищенный конструктор инициализации хэндла.
См. определение в файле ExecutionUnitHandle.h строка 107
static UnitId Cntm::ExecutionUnitHandle::NullId | ( | ) | [inline, static] |
Специальное значение идентификатора единицы выполнения, означающее ее отсутствие.
См. определение в файле ExecutionUnitHandle.h строка 63
ExecutionUnitHandle& Cntm::ExecutionUnitHandle::operator= | ( | const ExecutionUnitHandle & | Src | ) | [inline] |
Оператор присвоения.
Уничтожает связь со старым объектом единицы выполнения и устанавливает с новым, взятым из Src.
Src | - дублируемый хэндл. |
См. определение в файле ExecutionUnitHandle.h строка 69
Перекрестные ссылки impl.
UnitId Cntm::ExecutionUnitHandle::Id | ( | ) | const [inline] |
Идентификатор текущей единицы выполнения или NullId(), если хэндл не связан с единицей выполнения.
См. определение в файле ExecutionUnitHandle.h строка 74
Перекрестные ссылки impl.
bool Cntm::ExecutionUnitHandle::Assigned | ( | ) | const [inline] |
Возвращает true, если хэндл связан с единицей выполнения и false - в противном случае.
См. определение в файле ExecutionUnitHandle.h строка 79
Перекрестные ссылки impl.
bool Cntm::ExecutionUnitHandle::Terminated | ( | ) | const [inline] |
Возвращает флаг принудительного останова.
Если хэндл не связан с единицей выполнения, то всегда возвращается false.
См. определение в файле ExecutionUnitHandle.h строка 84
Перекрестные ссылки impl.
void Cntm::ExecutionUnitHandle::Unassign | ( | ) | throw () [inline] |
Разорвать связь с единицей выполнения.
После этого Assigned() будет возвращать false.
Не генерирует исключений.
См. определение в файле ExecutionUnitHandle.h строка 91
Перекрестные ссылки impl.
void Cntm::ExecutionUnitHandle::Terminate | ( | ) | throw () [inline] |
Установить флаг принудительного завершения.
Исходное значение этого флага - false. После вызова этого метода Terminated() и Cntm::ExecutionUnit::Terminated() вернут true, а Cntm::ExecutionUnit::CheckTerminating() сгенерирует исключение (примечание: методы объекта Cntm::ExecutionUnit должны быть вызваны в контексте той исполняемой единицы, с которой связан хэндл).
Если хэндл не связан с единицей выполнения, то ни каких действий не выполняется.
Не генерирует исключений.
См. определение в файле ExecutionUnitHandle.h строка 100
Перекрестные ссылки impl.
SpecUtils::ExecutionUnitImpl::Ptr Cntm::ExecutionUnitHandle::impl [protected] |
Ссылочный указатель на объект единицы выполнения.
См. определение в файле ExecutionUnitHandle.h строка 112
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |