Единица выполнения это код, выполняющийся, в определенной степени, автономно (по времени) от кода, создавшего единицу выполнения.
К единицам выполнения относятся асинхронные процедуры (см. класс Cntm::AsyncProc) и потоки активных объектов (см. классы Cntm::ActiveObject и Cntm::ActiveThread). Асинхронные процедуры позволяют отложить выполнение метода объекта на будущее (предварительно подготовив аргументы метода). Активные объекты - это объекты, способные по своей воле в любой момент времени выполнять некоторые действия, т.е. обладающие своими собственными потоками выполнения. В качестве асинхронных процедур и потоков активных объектов выступают методы объектов (т.е. не статические методы) с переданными им аргументами, которые указываются при создании единиц выполнения.
Класс Cntm::ExecutionUnit предоставляет базовый сервис для единиц исполнения - средства проверки принудительного завершения единицы выполнения. Это статические методы Terminated() и CheckTerminating(), которые следует вызывать из контекста единицы выполнения.
Взаимодействие с единицами выполнения производится через их хэндлы, которые возвращаются при создании единиц выполнения. Базовый класс хэндла - Cntm::ExecutionUnitHandle. Он предоставляет возможность сообщать единицам выполнения связанным с ним о принудительном завершении. Хэндлы асинхронных процедур имеют дополнительные возможности.
Класс поддерживает многопоточность.
См. определение в файле ExecutionUnit.h строка 35
Открытые статические члены | |
static bool | Terminated () |
Возвращает значение флага Terminated - принудительный останов единицы выполнения. | |
static void | CheckTerminating () |
Проверяет значение флага Terminated, и если он установлен, то генерирует исключение базовым классом которого является Cntm::TerminatingSignal. |
static bool Cntm::ExecutionUnit::Terminated | ( | ) | [inline, static] |
Возвращает значение флага Terminated - принудительный останов единицы выполнения.
Если флаг установлен, то это означает, что был послан сигнал на принудительное завершение через хэндл, связанный с единицей выполнения. Если флаг установлен, то единица выполнения должна начать завершение выполнения.
Это статический метод, который должен вызываться из контекста единицы выполнения, т.е. в процессе выполнения асинхронной процедуры или потока активного объекта. Если происходит вложенный запуск единиц выполнения, то значение возвращается для текущей единицы выполнения. Если текущий контекст - не единица выполнения (например, поток, созданный другими средствами), то всегда будет возвращаться false.
См. определение в файле ExecutionUnit.h строка 44
static void Cntm::ExecutionUnit::CheckTerminating | ( | ) | [inline, static] |
Проверяет значение флага Terminated, и если он установлен, то генерирует исключение базовым классом которого является Cntm::TerminatingSignal.
Реальный класс исключения м.б. либо Cntm::ActiveThreadTerminatingSignal либо Cntm::AsyncProcTerminatingSignal в зависимости от того, в чьем контексте был вызван этот метод. Если произошло исключение, то это означает, что был послан сигнал на принудительное завершение через хэндл, связанный с единицей выполнения. Можно не перехватывать это исключение, тогда единица выполнения авершится автоматически, если нужно выполнить завершающие действия, то его следует перехватить перед выходом из метода, соответствующего единице выполнения.
Это статический метод, который должен вызываться из контекста единицы выполнения, т.е. в процессе выполнения асинхронной процедуры или потока активного объекта. Если происходит вложенный запуск единиц выполнения, то значение возвращается для текущей единицы выполнения. Если текущий контекст - не единица выполнения (например, поток, созданный другими средствами), то ни каких действий не выполняется.
Исключение: TerminatingSignal (его потомки Cntm::ActiveThreadTerminatingSignal либо Cntm::AsyncProcTerminatingSignal) если флаг Terminated установлен.
См. определение в файле ExecutionUnit.h строка 57
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |