00001 /* 00002 * CntmLib - Подсчет ссылок, потоки, синхронизация, асинхронные процедуры, события 00003 * Copyright (c) 2005, Овсеевич Роман, CntmLib@mail.ru 00004 * _______________________________________________________________________________ 00005 * Разрешено свободное использование, копирование, распространение, изменение 00006 * (изменение сведений об авторских правах запрещено). Запрещена продажа и 00007 * включение всей библиотеки или ее частей в другие библиотеки. В сведениях об 00008 * авторских правах на программу (или сведениях о программе, об авторах, 00009 * использованных средствах разработки и т.д.) должна быть указана информация 00010 * о библиотеке CntmLib, ее авторе и, возможно, сайте или email'е. 00011 * Библиотека поставляется "как есть", без каких-либо гарантий со стороны автора. 00012 */ 00013 00014 #ifndef CNTM_BASICSYNC_H 00015 #define CNTM_BASICSYNC_H 00016 #include <Cntm/Synchro/SynchroSpace.h> 00017 #include <Cntm/Synchro/SynchroObject.h> 00018 00019 namespace Cntm 00020 { 00021 00022 /** 00023 * Базовый класс для синхросекций. Синхросекции автоматизируют процесс входа и выхода из синхропространства. В конструкторе синхросекций обычно производится вход, а в деструкторе - выход из синхропространства в соответствующем режиме. 00024 * 00025 * Использование синхросекций повышает удобство (для входа/выхода требуется написать только 1 строку кода) и надежность (выход из синхропространства будет произведен в любом случае, в т.ч. и при исключении). 00026 * 00027 * Объекты синхросекций содержат ссылочные указатели на синхрообъекты или синхропространства (IBasicSynchro), в которые произведен вход. Если синхросекция не используется для входа, то указатель на IBasicSynchro равен NULL. 00028 * 00029 * Данный класс не поддерживает многопоточность. 00030 * @author Овсеевич Р. 00031 */ 00032 class BasicSync 00033 { 00034 public: 00035 00036 /** 00037 * Возвращает указатель на синхрообъект или на синхропространство (IBasicSynchro), в которое произведен вход. Если возвращается NULL, то вход ни в какое пространство не произведен. 00038 */ 00039 IBasicSynchro::Ptr Object() const { return object; } 00040 00041 protected: 00042 00043 /** 00044 * Установить IBasicSynchro. 00045 */ 00046 void SetObject(const IBasicSynchro::Ptr & Object) { object = Object; } 00047 00048 /** 00049 * Сбросить IBasicSynchro. 00050 */ 00051 void ResetObject() { object.SetNull(); } 00052 00053 private: 00054 00055 /** 00056 * Указатель на IBasicSynchro, в которое произведен вход. Если NULL, то вход ни в какое пространство не произведен. 00057 */ 00058 IBasicSynchro::Ptr object; 00059 }; 00060 00061 } 00062 00063 #endif //CNTM_BASICSYNC_H
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |