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
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |