Класс Cntm::ExecutionUnitHandle
[Cntm.Concurrency]

Граф наследования:Cntm::ExecutionUnitHandle:

Cntm::ActiveThreadHandle Cntm::AsyncProcHandle Cntm::AsyncProcResult< ResT > Cntm::AsyncProcResult< void >

Полный список членов класса


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

Класс хэндла единицы выполнения.

Является базовым классом для хэндлов асинхронных процедур (класс Cntm::AsyncProcHandle) и потоков активных объектов (класс Cntm::ActiveThreadHandle).

Хэндл служит для управления асинхронной процедурой или потоком со стороны создателя единицы выполнения. По сути хэндл является ссылочным указателем на объект единицы выполнения, т.е. пока существует хотя бы один хэндл, связанный с объектом единицы выполнения, этот объект будет существовать.

Хэндл может быть связан с единицей выполнения или нет. Это можно определить через свойство Assigned(). Разорвать связь между хэндлом и объектом единицы выполнения можно методом Unassign(). Также связь разрушается, когда происходит уничтожение хэндла. Значения хэндлов могут быть скопированы друг в друга. В этом случае связь со старым объектом разрывается и производится связь с тем объектом, с которым связан источник.

Сам по себе объект единицы исполнения не доступен. Все управление этими объектами производится через их хэндлы (создание асинхронных процедур и потоков активных объектов производится с помощью статических методов классов Cntm::AsyncProc и Cntm::ActiveThread, которые возвращают хэндлы созданных ими объектов единиц выполнения).

Данный класс является базовым классом хэндла и предоставляет сервис по установке флага принудительного останова - метод Terminate().

Класс поддерживает многопоточность.

Автор:
Овсеевич Р.

См. определение в файле ExecutionUnitHandle.h строка 36


Открытые типы

typedef void * UnitId
 Тип идентификатора единицы выполнения.

Открытые члены

 ExecutionUnitHandle ()
 Конструктор по умолчанию.
 ExecutionUnitHandle (const ExecutionUnitHandle &Src)
 Конструктор копирования.
ExecutionUnitHandleoperator= (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


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