Описание понятия синхропространства приведено в 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 |
Класс, реализующий все функции синхропространства (вход в синхропространство, выполнение синхронных задач), созданием объекта синхропространства и ожидания его уничтожения. |
Переопределяет метод предка Cntm::SynchroSpace.
См. определение в файле MainSynchroSpace.h строка 74
Cntm::MainSynchroSpace::~MainSynchroSpace | ( | ) | [inline, protected] |
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
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |