summaryrefslogtreecommitdiff
path: root/cpp/include/IceUtil/ObjectBase.h
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2003-10-22 03:59:45 +0000
committerMichi Henning <michi@zeroc.com>2003-10-22 03:59:45 +0000
commitb50195965683cd0381bcbf99ecb6f3d1dd934ead (patch)
tree8c690c117bf27402391d98031efe2512902b6af9 /cpp/include/IceUtil/ObjectBase.h
parentWin32 fixes (diff)
downloadice-b50195965683cd0381bcbf99ecb6f3d1dd934ead.tar.bz2
ice-b50195965683cd0381bcbf99ecb6f3d1dd934ead.tar.xz
ice-b50195965683cd0381bcbf99ecb6f3d1dd934ead.zip
Got rid of StaticRecMutex.
Diffstat (limited to 'cpp/include/IceUtil/ObjectBase.h')
-rw-r--r--cpp/include/IceUtil/ObjectBase.h36
1 files changed, 17 insertions, 19 deletions
diff --git a/cpp/include/IceUtil/ObjectBase.h b/cpp/include/IceUtil/ObjectBase.h
index 52467486793..664a2745657 100644
--- a/cpp/include/IceUtil/ObjectBase.h
+++ b/cpp/include/IceUtil/ObjectBase.h
@@ -15,14 +15,12 @@
#ifndef ICE_UTIL_OBJECTBASE_H
#define ICE_UTIL_OBJECTBASE_H
-#include <IceUtil/StaticRecMutex.h>
+#include <IceUtil/GCRecMutex.h>
#include <set>
namespace IceUtil
{
-extern ICE_UTIL_API StaticRecMutex gcMutex;
-
class GC;
class ObjectBase;
@@ -42,12 +40,12 @@ public:
int __getRef() const;
void __setNoDelete(bool);
void __decRefUnsafe();
+ virtual void __gcReachable(ObjectMultiSet&) const = 0;
+ virtual void __gcClear() = 0;
protected:
static void __addObject(ObjectMultiSet&, ObjectBase*);
- virtual void __gcReachable(ObjectMultiSet&) const = 0;
- virtual void __gcClear() = 0;
private:
@@ -61,26 +59,26 @@ private:
inline
ObjectBase::ObjectBase()
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
_ref = 0;
_noDelete = false;
_adopted = false;
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
}
inline
ObjectBase::~ObjectBase()
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
ObjectSet::size_type num = objects.erase(this);
assert(num == 1);
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
}
inline void
ObjectBase::__incRef()
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
assert(_ref >= 0);
if(!_adopted && _ref == 0)
{
@@ -89,13 +87,13 @@ ObjectBase::__incRef()
assert(rc.second);
}
++_ref;
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
}
inline void
ObjectBase::__decRef()
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
bool doDelete = false;
assert(_ref > 0);
if(--_ref == 0)
@@ -107,24 +105,24 @@ ObjectBase::__decRef()
{
delete this;
}
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
}
inline int
ObjectBase::__getRef() const
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
int ref = _ref;
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
return ref;
}
inline void
ObjectBase::__setNoDelete(bool b)
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
_noDelete = b;
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
}
inline void
@@ -136,12 +134,12 @@ ObjectBase::__decRefUnsafe()
inline void
ObjectBase::__addObject(ObjectMultiSet& c, ObjectBase* p)
{
- gcMutex.lock();
+ gcRecMutex._m->lock();
if(p)
{
c.insert(p);
}
- gcMutex.unlock();
+ gcRecMutex._m->unlock();
}
}