Класс Cntm::MainSynchroSpace
[Cntm.Synchro]

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

Cntm::SynchroSpace Cntm::RefBase Cntm::IBasicSynchro Cntm::IRefObject Cntm::IRefObject

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


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

Класс главного синхропространства.

Описание понятия синхропространства приведено в SynchroSpace.

Для обработки синхронных задач используется главный поток.

Обеспечение жизненного цикла приложения. Для обеспечения жизненного цикла применяется метод Run(). Также в нем реализован цикл обработки синхронных заданий. В общем случае жизненный цикл выглядит следующим образом.

 int main(args...)
 {
        Cntm::MainSynchroSpace::Begin();
        ...
        Инициализация
        ...
        Cntm::MainSynchroSpace::Run();
        ...
        Деинициализация
        ...
        Cntm::MainSynchroSpace::End();
        return 0;
 }

Метод Begin() производит создание и подготовку главного синхропространства. Далее следует инициализация системы, после чего методом Run() запускается приложение - это и является жизненным циклом приложения. После завершения работы (методом Stop()) происходит деинициализация и выход из главного синхропространства - метод End(). Данный метод производит ожидание момента, когда будут уничтожены все синхрообъекты в системе. В процессе ожидания синхропространство может обрабатывать синхронные задачи.

Замечание. В интервале от метода Begin() до входа в цикл методом Run(), от выхода из цикла до входа в следующий цикл, от выхода из цикла до метода End() главный поток выполнения находится внутри синхропространства.

Существует более простая и удобная структура приложения:

 int main(args...)
 {
        Cntm::MainSynchroSpace::Application a;
        ...
        Инициализация
        ...
        a.Run();
        ...
        Деинициализация
        ...
        return 0;
 }

Замечание по реентерабельности. Данный тип синхропространства запрещает реентерабельный вход в синхропространство. Поэтому разница между реентерабельным и не реентерабельным режимами отсутствует.

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

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


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

typedef RefPtr
< MainSynchroSpace
Ptr

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

void AddSynchroTask (TaskBase *Task)
 Добавить новую задачу в конец очереди.

Открытые статические члены

static void Begin ()
 Создание и вход в главное синхропространство.
static void Run ()
 Запустить жизненный цикл приложения и обработку синхронных заданий.
static void End ()
 Выход из главного синхропространства.
static void Stop ()
 Остановить выполнение приложения.

Защищенные члены

 ~MainSynchroSpace ()
 Деструктор.
void DoEnter ()
 Выполнить вход в критическую секцию, связанную с синхропространством.
bool DoTryEnter ()
 Выполнить вход в критическую секцию, связанную с синхропространством.
void DoLeave ()
 Выполнить вход в критическую секцию, связанную с синхропространством.

Друзья

class Implement

Классы

class  Application
 Класс приложения. Подробнее...
class  Implement
 Класс, реализующий все функции синхропространства (вход в синхропространство, выполнение синхронных задач), созданием объекта синхропространства и ожидания его уничтожения.

Определения типов

typedef RefPtr<MainSynchroSpace> Cntm::MainSynchroSpace::Ptr

Переопределяет метод предка Cntm::SynchroSpace.

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


Конструктор(ы)

Cntm::MainSynchroSpace::~MainSynchroSpace (  )  [inline, protected]

Деструктор.

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


Методы

void Cntm::MainSynchroSpace::AddSynchroTask ( TaskBase *  Task  )  [inline]

Добавить новую задачу в конец очереди.

Объект задачи д.б. создан в динамической памяти. После выполнения задача автоматически будет удалена. Класс объекта задачи д.б. унаследован от SynchroSpace::TaskBase.

Подробнее о синхрозадачах см. описание класса SynchroSpace и SynchroSpace::TaskBase.

Система гарантирует, что задача будет выполнена в контексте главного потока синхронно с прочими событиями библиотеки QT.

Исключения:
NullArgException если не указана задача.
Аргументы:
Task - задача, которую нужно выполнить. Объект задачи д.б. создан в динамической памяти.

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

void Cntm::MainSynchroSpace::Begin (  )  [static]

Создание и вход в главное синхропространство.

Поток, вызвавший этот метод считается главным потоком приложения.

Вместо вызова этого метода рекомендуется использовать класс MainSynchroSpace::Application.

Исключения:
IllegalStateException при попытке повторного создания главного синхропространства (главное синхропространство этого же или другого типа уже создано).

См. определение в файле MainSynchroSpace.cpp строка 124

Перекрестные ссылки Implement.

static void Cntm::MainSynchroSpace::Run (  )  [inline, static]

Запустить жизненный цикл приложения и обработку синхронных заданий.

Метод будет выполняться до тех пор, пока приложение не будет остановлено методом Stop().

Данный метод должен вызываться из главного потока приложения.

Допустимо несколько последовательных вызовов данного метода. Поведение при последующих вызовах ничем не отличается от первого вызова.

Исключения:
LoopInNoMainThreadException - при попытке запуска цикла обработки сообщений не из главного потока
NoReentrantModeException - при попытке реентерабельного входа в синхропространство (рекурсивный вызов данного метода)

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

static void Cntm::MainSynchroSpace::End (  )  [inline, static]

Выход из главного синхропространства.

Метод производит ожидание уничтожения всех синхрообъектов и синхропространств. В процессе ожидания запускается цикл обработки событий.

Исключения:
LoopInNoMainThreadException - при попытке завершения работы не из главного потока

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

static void Cntm::MainSynchroSpace::Stop (  )  [inline, static]

Остановить выполнение приложения.

Вызов метода действует на текущий или последующий запуск метода Run().

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

void Cntm::MainSynchroSpace::DoEnter (  )  [inline, protected, virtual]

Выполнить вход в критическую секцию, связанную с синхропространством.

Замещает Cntm::SynchroSpace.

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

bool Cntm::MainSynchroSpace::DoTryEnter (  )  [inline, protected, virtual]

Выполнить вход в критическую секцию, связанную с синхропространством.

Замещает Cntm::SynchroSpace.

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

void Cntm::MainSynchroSpace::DoLeave (  )  [inline, protected, virtual]

Выполнить вход в критическую секцию, связанную с синхропространством.

Замещает Cntm::SynchroSpace.

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


Документация по друзьям класса и функциям, отноносящимся к классу

friend class Implement [friend]

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


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