00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_CONCURRENT_MUTEX_H_
00019 #define _DECAF_CONCURRENT_MUTEX_H_
00020
00021 #include <decaf/util/concurrent/Synchronizable.h>
00022 #include <decaf/util/concurrent/Concurrent.h>
00023 #include <decaf/lang/Thread.h>
00024 #include <decaf/util/Config.h>
00025
00026 namespace decaf {
00027 namespace util {
00028 namespace concurrent {
00029
00030 class MutexProperties;
00031
00039 class DECAF_API Mutex: public Synchronizable {
00040 private:
00041
00042 MutexProperties* properties;
00043
00044 private:
00045
00046 Mutex(const Mutex& src);
00047 Mutex& operator=(const Mutex& src);
00048
00049 public:
00050
00051 Mutex();
00052
00053 Mutex(const std::string& name);
00054
00055 virtual ~Mutex();
00056
00057 std::string getName() const;
00058
00059 std::string toString() const;
00060
00061 bool isLocked() const;
00062
00063 public:
00064
00065 virtual void lock();
00066
00067 virtual bool tryLock();
00068
00069 virtual void unlock();
00070
00071 virtual void wait();
00072
00073 virtual void wait(long long millisecs);
00074
00075 virtual void wait(long long millisecs, int nanos);
00076
00077 virtual void notify();
00078
00079 virtual void notifyAll();
00080
00081 };
00082
00083 }}}
00084
00085 #endif