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_USINGSYNC_H 00015 #define CNTM_USINGSYNC_H 00016 #include <Cntm/Synchro/SyncScopes/Sync.h> 00017 #include <Cntm/Synchro/IBasicSynchro.h> 00018 #include <Cntm/Concurrency/UsingScopes/Using.h> 00019 00020 namespace Cntm 00021 { 00022 /** 00023 * Добавляет к Cntm::Using свойства синхросекций, т.е. объединяет классы Cntm::Using и Cntm::Sync в один. 00024 * 00025 * Класс не поддерживает многопоточность. 00026 * @author Овсеевич Р. 00027 * \ingroup Concurrency 00028 */ 00029 class UsingSync: public Using, public Sync 00030 { 00031 public: 00032 00033 /** 00034 * Конструктор инициализации ссылочным указателем или обычной ссылкой (которая м.б. преобразована к ссылочному указателю) на объект. Сохраняет полученный ссылочный указатель. Производит вход в синхропространство в нереентерабельном режиме. 00035 * 00036 * Исключение: TerminatingSignal - если установлен флаг Terminated() текущей единицы выполнения или объект находится в удаляемом состоянии (ссылочный указатель на него равен NULL). 00037 * @param Object - сылочный указатель или ссылка на объект, который будет использоваться в этой секции. 00038 */ 00039 UsingSync(const IBasicSynchro::Ptr& Object): Using(Object), Sync(Object) { } 00040 00041 /** 00042 * Оператор присвоения ссылочного указателя или обычной ссылки (которая м.б. преобразована к ссылочному указателю) на объект. Сохраняет полученный ссылочный указатель. Производит вход в синхропространство в нереентерабельном режиме. 00043 * 00044 * Исключение: TerminatingSignal - если установлен флаг Terminated() текущей единицы выполнения или объект находится в удаляемом состоянии (ссылочный указатель на него равен NULL). 00045 * @param Object - сылочный указатель или ссылка на объект, который будет использоваться в этой секции. 00046 */ 00047 UsingSync& operator = (const IBasicSynchro::Ptr& Object) 00048 { 00049 Using::operator = (Object); 00050 Sync::operator = (Object); 00051 return *this; 00052 } 00053 00054 /** 00055 * Досрочный выход из Using-секции. Сбрасывает в NULL значение хранящегося ссылочного указателя и выходит из синхропространства. 00056 */ 00057 void Unuse() 00058 { 00059 SetNull(); 00060 Leave(); 00061 } 00062 }; 00063 00064 } 00065 00066 #endif //CNTM_USINGSYNC_H
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |