BasicSync.h

См. документацию.
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

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