IBasicSynchro.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_IBASICSYNCHRO_H
00015 #define CNTM_IBASICSYNCHRO_H
00016 #include <Cntm/RefCount/IRefObject.h>
00017 
00018 namespace Cntm
00019 {
00020         
00021         class SynchroSpace;
00022         
00023         /**
00024          * Данный класс является базовым для классов синхропространств и сихрообъектов и определяет способы входа в синхропространство. Описание этих способов приведено в документации по классу Cntm::SynchroSpace. Методы синхрообъектов просто вызывают соответствующие методы синхропространства, в котором находится синхрообъект.
00025          * @author Овсеевич Р.
00026          * \ingroup Synchro
00027          */
00028         class IBasicSynchro: virtual public IRefObject
00029         {
00030         public:
00031 
00032                 typedef RefPtr<IBasicSynchro> Ptr;
00033 
00034                 /**
00035                  * Возвращает синхропространство, к которому принадлежит синхрообъект. Результат не может принять значение NULL.
00036                  */
00037                 virtual RefPtr<SynchroSpace> Space() const = 0;
00038                 
00039                 /**
00040                  * Возвращает текущий режим входа в синхропространство. Описание см. в Cntm::SynchroSpace::IsReentrantMode().
00041                  * 
00042                  * Метод должен вызываться только после входа в синхропространство и в том же потоке, который произвел вход.
00043                  */
00044                 virtual bool IsReentrantMode() const = 0;
00045         
00046                 /**
00047                  * Производит вход в синхропространство. Если синхропространство занято другим потоком, то производит ожидание, пока другой поток не выйдет из синхропространства. Описание см. в Cntm::SynchroSpace::Enter(). 
00048                  */
00049                 virtual void Enter(bool ReentrantMode = false) = 0;
00050         
00051                 /**
00052                  * Производит попытку входа в синхропространство. Если синхропространство занято другим потоком, то возвращает false, иначе входит в синхропространство и возвращает true. Описание см. в Cntm::SynchroSpace::TryEnter(). 
00053                  */
00054                 virtual bool TryEnter(bool ReentrantMode = false) = 0;
00055         
00056                 /**
00057                  * Производит выход из синхропространства. Описание см. в Cntm::SynchroSpace::Leave(). 
00058                  */
00059                 virtual void Leave(bool ReentrantMode = false) = 0;
00060         };
00061 
00062 }
00063 
00064 #endif //CNTM_IBASICSYNCHRO_H

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