Pagina Principale   Moduli   Lista dei namespaces   Gerarchia delle classi   Lista in ordine alfabetico   Lista dei composti   Lista dei files   Membri dei namespaces   Membri dei composti   Membri dei files   Esempi  

/home/fbassi/devel/projects/reti/utils/ShareLock.h

Vai alla documentazione di questo file.
00001 /*
00002  *    FBFS Distributed Object Repository
00003  *    Copyright (C) 2001 Francesco V. Bassi
00004  *
00005  *    This program is free software; you can redistribute it and/or modify
00006  *    it under the terms of the GNU General Public License as published by
00007  *    the Free Software Foundation; either version 2 of the License, or
00008  *    (at your option) any later version.
00009  *
00010  *    This program is distributed in the hope that it will be useful,
00011  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  *    GNU General Public License for more details.
00014  *
00015  *    You should have received a copy of the GNU General Public License
00016  *    along with this program; if not, write to the Free Software
00017  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018  */
00019 
00020 #ifndef _utils_SHARELOCK
00021 #define _utils_SHARELOCK
00022 
00028 #include <multiset.h>
00029 #include <string>
00030 #include "String.h"
00031 
00032 namespace utils {
00033     class ShareLock;
00034 };
00035 
00049 class utils::ShareLock {
00050     public:
00054         ShareLock();
00055 
00059         ~ShareLock();
00060         
00070         void lock(const string &resource, bool exclusive=false);
00071 
00078         void unlock(const string &resource);
00079     private:
00080         inline void alloc(const string &resource, bool ex);
00081         inline void free(const string &resource);
00082         inline bool isbusy(const string &resource, bool ex);
00083 
00084         pthread_mutex_t mut;
00085         pthread_cond_t cond;
00086         multiset<string, fbfs::str_cmp> excl;   // basterebbe un set, ma così risparmio codice, poiché
00087                                                 // multiset già devo usarlo.
00088         multiset<string, fbfs::str_cmp> shared;
00089 };
00090 
00091 #endif

Generato il Thu Feb 15 13:24:57 2001 per A Simple Distributed Object Repository with CORBA & C++. da doxygen1.2.3 scritto da Dimitri van Heesch, © 1997-2000