Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::Thread Class Reference
[Multithreading]

#include <OSGThread.h>

Inheritance diagram for osg::Thread:

osg::PThreadBase osg::ThreadCommonBase osg::BaseThread osg::BasePThreadBase osg::BaseThreadCommonBase osg::MPBase osg::MemoryObject List of all members.

Public Types

typedef MPThreadType Type
typedef void(* ThreadFuncF )(void *pThreadArg)

Public Member Functions

bool isInitialized (void)
Run
*void run (UInt32 uiAspectId)
Run
*bool runFunction (ThreadFuncF fThreadFunc, UInt32 uiAspectId, void *pThreadArg)
Run
bool runFunction (ThreadFuncF fThreadFunc, void *pThreadArg)
*void run (void)
Get
*ChangeListgetChangeList (void)
Blocking
*void block (void)
void unblock (void)
Helper
*bool exists (void)
void terminate (void)
void kill (void)
Dump
*void print (void)
Get
*virtual MPTypegetType (void)
virtual const MPTypegetType (void) const
UInt32 getTypeId (void)
const Char8getCName (void) const
Reference Counting
*void addRef (void)
void subRef (void)
Int32 getRefCount (void)

Static Public Member Functions

Get
*static PthreadBasegetCurrent (void)
static Threadget (const Char8 *szName)
static Threadfind (const Char8 *szName)
Get
*static UInt32 getAspect (void)
static ChangeListgetCurrentChangeList (void)
Get
static BaseThreadcreate (void)
static const MPThreadTypegetClassType (void)
Join
*static void join (BaseThread *pThread)
Class Get
*static const MPTypegetStaticType (void)
static UInt32 getStaticTypeId (void)

Static Public Attributes

static const UInt32 InvalidAspect

Protected Types

typedef PthreadBase Inherited

Protected Member Functions

Constructors
Thread (const Char8 *szName, UInt32 uiId)
Destructor
*virtual ~Thread (void)
Setup
*virtual void init (void)
void setupAspect (void)
void setupChangeList (void)
Set
*void setAspect (UInt32 uiAspectId)
void setChangeList (ChangeList *pChangeList)
Workproc
*virtual void workProc (void)
Construction
void setupThread (void)
void setupBlockCond (void)

Static Protected Member Functions

Init
*static Threadcreate (const Char8 *szName, UInt32 uiId)
static void initThreading (void)
Free
*static void freeAspect (void *pAspect)
static void freeChangeList (void *pChangeList)
Join
*static void join (BasePThreadBase *threadP)
Class Specific
static void runWorkProc (void *pThread)
Helper
*static void * threadFunc (void *pThreadArg)
static void freeThread (void *pThread)

Protected Attributes

UInt32 _uiThreadId
bool _bInitialized
Member
*UInt32 _uiAspectId
ChangeList_pChangeList
Instance Variables
*void * _pThreadData [3]
pthread_t * _pThreadDesc
pthread_cond_t * _pBlockCond
pthread_mutex_t * _pBlockMutex
Class Specific
Char8_szName

Static Protected Attributes

static pthread_key_t _threadKey
Member
*static MPThreadType _type
Member
*static pthread_key_t _aspectKey
static pthread_key_t _changeListKey

Private Member Functions

 Thread (const Thread &source)
 prohibit default function (move to 'public' if needed)
void operator= (const Thread &source)
 prohibit default function (move to 'public' if needed)

Friends

class ThreadManager
class MPFieldStore< BaseThread >

Detailed Description

Definition at line 466 of file OSGThread.h.


Member Typedef Documentation

typedef PthreadBase osg::Thread::Inherited [protected]
 

Reimplemented from osg::PThreadBase.

Definition at line 472 of file OSGThread.h.

typedef MPThreadType osg::Thread::Type
 

Reimplemented from osg::BaseThread.

Definition at line 478 of file OSGThread.h.

typedef void(* osg::BaseThreadCommonBase::ThreadFuncF)(void *pThreadArg) [inherited]
 

Definition at line 90 of file OSGBaseThread.h.


Constructor & Destructor Documentation

Thread::Thread const Char8 szName,
UInt32  uiId
[protected]
 

Definition at line 648 of file OSGThread.cpp.

Referenced by create().

00648                                                :
00649     Inherited(szName, uiId)
00650 {
00651 }

Thread::~Thread void   )  [protected, virtual]
 

Definition at line 656 of file OSGThread.cpp.

00657 {
00658 }

osg::Thread::Thread const Thread source  )  [private]
 


Member Function Documentation

PthreadBase * Thread::getCurrent void   )  [static]
 

Reimplemented from osg::BaseThread.

Definition at line 580 of file OSGThread.cpp.

References osg::Directory::getCurrent().

00581 {
00582     return static_cast<ThreadBase *>(Inherited::getCurrent());
00583 }

Thread * Thread::get const Char8 szName  )  [static]
 

Reimplemented from osg::BaseThread.

Definition at line 585 of file OSGThread.cpp.

References osg::ThreadManager::getThread(), and osg::ThreadManager::the().

00586 {
00587     BaseThread *pThread = ThreadManager::the()->getThread(szName, "OSGThread");
00588 
00589     return dynamic_cast<Thread *>(pThread);
00590 }

Thread * Thread::find const Char8 szName  )  [static]
 

Reimplemented from osg::BaseThread.

Definition at line 592 of file OSGThread.cpp.

References osg::ThreadManager::findThread(), and osg::ThreadManager::the().

Referenced by osg::SceneFileHandler::startReadProgressThread(), and osg::SceneFileHandler::stopReadProgressThread().

00593 {
00594     BaseThread *pThread = ThreadManager::the()->findThread(szName);
00595 
00596     return dynamic_cast<Thread *>(pThread);
00597 }

void Thread::run UInt32  uiAspectId  ) 
 

Definition at line 599 of file OSGThread.cpp.

References osg::PThreadBase::runFunction(), and osg::BaseThread::runWorkProc().

00600 {
00601     Inherited::runFunction(runWorkProc, uiAspectId, this);
00602 }

Thread * Thread::create const Char8 szName,
UInt32  uiId
[static, protected]
 

Reimplemented from osg::BaseThread.

Definition at line 607 of file OSGThread.cpp.

References Thread().

00608 {
00609     return new Thread(szName, uiId);
00610 }

void Thread::initThreading void   )  [static, protected]
 

Reimplemented from osg::BaseThread.

Definition at line 612 of file OSGThread.cpp.

References osg::PThreadBase::_aspectKey, osg::PThreadBase::_changeListKey, FFASSERT, FINFO, osg::PThreadBase::freeAspect(), osg::PThreadBase::freeChangeList(), and osg::ThreadManager::setAppThreadType().

00613 {
00614     FINFO(("Thread::initThreading\n"))
00615 
00616 #if defined(OSG_USE_PTHREADS) && !defined(OSG_PTHREAD_ELF_TLS)
00617     int rc; 
00618 
00619     rc = pthread_key_create(&(Thread::_aspectKey), 
00620                               Thread::freeAspect);
00621 
00622     FFASSERT((rc == 0), 1, ("Failed to create pthread aspect key\n");)
00623 
00624     rc = pthread_key_create(&(Thread::_changeListKey), 
00625                               Thread::freeChangeList);
00626 
00627     FFASSERT((rc == 0), 1, ("Failed to create pthread changelist key\n");)
00628 #endif
00629 
00630 #if defined(OSG_USE_WINTHREADS) && defined(OSG_ASPECT_USE_LOCALSTORAGE)       
00631     Thread::_aspectKey     = TlsAlloc();
00632 
00633     FFASSERT((Thread::_aspectKey != 0xFFFFFFFF), 1, 
00634              ("Failed to alloc aspect key local storage\n");)
00635 
00636     Thread::_changeListKey = TlsAlloc();
00637 
00638     FFASSERT((Thread::_changeListKey != 0xFFFFFFFF), 1, 
00639              ("Failed to alloc changelist key local storage\n");)
00640 #endif
00641 
00642     ThreadManager::setAppThreadType("OSGThread");
00643 }

void osg::Thread::operator= const Thread source  )  [private]
 

UInt32 PThreadBase::getAspect void   )  [static, inherited]
 

Definition at line 133 of file OSGThread.cpp.

References osg::PThreadBase::_aspectKey.

Referenced by osg::ChangeList::apply(), osg::ChangeList::applyToCurrent(), osg::FieldContainerPtr::beginEdit(), osg::FieldContainerPtrBase::deleteContainers(), osg::FieldContainerPtrBase::FieldContainerPtrBase(), osg::NodePtr::getCore(), osg::NodePtr::getCPtr(), osg::ConstFCPtr< BasePtrTypeT, FieldContainerTypeT >::getCPtr(), osg::FCPtr< BasePtrTypeT, FieldContainerTypeT >::getCPtr(), osg::ConstFieldContainerPtr::getCPtr(), osg::FieldContainerPtr::getCPtr(), osg::CNodePtr::getCPtr(), osg::AttachmentPtr::getCPtr(), osg::AttachmentContainerPtr::getCPtr(), osg::CNodePtr::getNode(), osg::FieldContainer::newPtr(), osg::NodePtr::operator *(), osg::ConstFCPtr< BasePtrTypeT, FieldContainerTypeT >::operator *(), osg::FCPtr< BasePtrTypeT, FieldContainerTypeT >::operator *(), osg::ConstFieldContainerPtr::operator *(), osg::FieldContainerPtr::operator *(), osg::CNodePtr::operator *(), osg::AttachmentPtr::operator *(), osg::AttachmentContainerPtr::operator *(), osg::NodePtr::operator->(), osg::ConstFCPtr< BasePtrTypeT, FieldContainerTypeT >::operator->(), osg::FCPtr< BasePtrTypeT, FieldContainerTypeT >::operator->(), osg::ConstFieldContainerPtr::operator->(), osg::FieldContainerPtr::operator->(), osg::CNodePtr::operator->(), osg::AttachmentPtr::operator->(), osg::AttachmentContainerPtr::operator->(), and osg::ProxyGroup::startLoading().

00134 {
00135 #if defined(OSG_PTHREAD_ELF_TLS)
00136     return _uiTLSAspectId;
00137 #else
00138     UInt32 *pUint;
00139 
00140     pUint = (UInt32 *) pthread_getspecific(_aspectKey);
00141 
00142     return *pUint;
00143 #endif
00144 
00145 }

ChangeList * PThreadBase::getCurrentChangeList void   )  [static, inherited]
 

Definition at line 147 of file OSGThread.cpp.

References osg::PThreadBase::_changeListKey.

Referenced by osg::FieldContainerPtrBase::addRef(), osg::FieldContainerPtrBase::deleteContainers(), osg::FieldContainerPtr::endEditNotChanged(), osg::ClusterWindow::frameInit(), osg::FieldContainer::newPtr(), and osg::FieldContainerPtrBase::subRef().

00148 {
00149 #if defined(OSG_PTHREAD_ELF_TLS)
00150     return _pTLSChangeList;
00151 #else
00152     ChangeList **pCList;
00153 
00154     pCList = (ChangeList **) pthread_getspecific(_changeListKey);
00155 
00156     return *pCList;
00157 #endif
00158 }

bool PThreadBase::runFunction ThreadFuncF  fThreadFunc,
UInt32  uiAspectId,
void *  pThreadArg
[inherited]
 

Definition at line 165 of file OSGThread.cpp.

References osg::ThreadManager::getNumAspects(), osg::BaseThread::runFunction(), osg::ThreadCommonBase::setAspect(), and SFATAL.

Referenced by run(), osg::ProxyGroup::startLoading(), osg::SceneFileHandler::startReadProgressThread(), and osg::startSceneGraphViewThread().

00168 {
00169     if(uiAspectId >= ThreadManager::getNumAspects())
00170     {
00171         SFATAL << "OSGPTB : invalid aspect id" << std::endl;
00172         return false;
00173     }
00174 
00175     Inherited::setAspect(uiAspectId);
00176 
00177     return Inherited::runFunction(fThreadFunc, pThreadArg);
00178 }

bool BaseThread::runFunction ThreadFuncF  fThreadFunc,
void *  pThreadArg
[inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 794 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::runFunction().

Referenced by osg::PointMCastConnection::initialize(), osg::GroupMCastConnection::initialize(), and osg::PThreadBase::runFunction().

00796 {
00797     return Inherited::runFunction(fThreadFunc, pThreadArg);
00798 }

void PThreadBase::freeAspect void *  pAspect  )  [static, protected, inherited]
 

Definition at line 184 of file OSGThread.cpp.

Referenced by initThreading(), and osg::ThreadManager::shutdown().

00185 {
00186     UInt32 *pUint = (UInt32 *) pAspect;
00187 
00188     if(pUint != NULL)
00189         delete pUint;
00190 }

void PThreadBase::freeChangeList void *  pChangeList  )  [static, protected, inherited]
 

Definition at line 192 of file OSGThread.cpp.

Referenced by initThreading(), and osg::ThreadManager::shutdown().

00193 {
00194     ChangeList **pCl = (ChangeList **) pChangeList;
00195 
00196     if(pCl != NULL)
00197         delete pCl;
00198 }

void PThreadBase::init void   )  [protected, virtual, inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 220 of file OSGThread.cpp.

References osg::BaseThreadCommonBase::_bInitialized, init(), osg::PThreadBase::setupAspect(), and osg::PThreadBase::setupChangeList().

Referenced by osg::ExternalThread::initialize().

00221 {
00222     if(_bInitialized == true)
00223         return;
00224 
00225     Inherited::init();
00226 
00227     if(_bInitialized == true)
00228     {
00229         setupAspect    ();        
00230         setupChangeList();        
00231     }
00232 }

void PThreadBase::setupAspect void   )  [protected, inherited]
 

Definition at line 235 of file OSGThread.cpp.

References osg::PThreadBase::_aspectKey, and osg::ThreadCommonBase::_uiAspectId.

Referenced by osg::PThreadBase::init().

00236 {
00237 
00238 #if defined(OSG_PTHREAD_ELF_TLS)
00239     _uiTLSAspectId  = Inherited::_uiAspectId;
00240 #else
00241     UInt32 *pUint = new UInt32;
00242 
00243     *pUint = Inherited::_uiAspectId;
00244 
00245     pthread_setspecific(_aspectKey, (void *) pUint);  
00246 #endif
00247 }

void PThreadBase::setupChangeList void   )  [protected, inherited]
 

Definition at line 249 of file OSGThread.cpp.

References osg::PThreadBase::_changeListKey, osg::ThreadCommonBase::_pChangeList, osg::ThreadCommonBase::_uiAspectId, osg::ChangeList::clearAll(), and osg::ThreadCommonBase::setChangeList().

Referenced by osg::PThreadBase::init().

00250 {
00251 #if defined(OSG_PTHREAD_ELF_TLS)
00252     if(Inherited::_pChangeList == NULL)
00253     {
00254         _pTLSChangeList = new ChangeList;
00255 
00256         Inherited::setChangeList(_pTLSChangeList);
00257     }
00258     else
00259     {
00260         _pTLSChangeList = Inherited::_pChangeList;
00261         
00262         _pTLSChangeList->clearAll();
00263     }
00264     
00265     _pTLSChangeList->setAspect(Inherited::_uiAspectId);
00266 #else
00267     ChangeList **pChangeList = new ChangeList *;
00268 
00269     if(Inherited::_pChangeList == NULL)
00270     {
00271         *pChangeList = new ChangeList;
00272 
00273         Inherited::setChangeList(*pChangeList);
00274     }
00275     else
00276     {
00277         *pChangeList = Inherited::_pChangeList;
00278         
00279         (*pChangeList)->clearAll();
00280     }
00281 
00282     (*pChangeList)->setAspect(Inherited::_uiAspectId);
00283     pthread_setspecific(_changeListKey, (void *) pChangeList);  
00284 #endif
00285 }

ChangeList * ThreadCommonBase::getChangeList void   )  [inherited]
 

Definition at line 77 of file OSGThread.cpp.

References osg::ThreadCommonBase::_pChangeList.

00078 {
00079     return _pChangeList;
00080 }

void ThreadCommonBase::setAspect UInt32  uiAspectId  )  [protected, inherited]
 

Definition at line 107 of file OSGThread.cpp.

References osg::ThreadCommonBase::_uiAspectId.

Referenced by osg::ExternalThread::initialize(), and osg::PThreadBase::runFunction().

00108 {
00109     _uiAspectId = uiAspectId;
00110 }

void ThreadCommonBase::setChangeList ChangeList pChangeList  )  [protected, inherited]
 

Definition at line 112 of file OSGThread.cpp.

References osg::ThreadCommonBase::_pChangeList, and osg::setRefP().

Referenced by osg::PThreadBase::setupChangeList().

00113 {
00114     setRefP(_pChangeList, pChangeList);
00115 }

BaseThread * BaseThread::create void   )  [static, inherited]
 

Definition at line 762 of file OSGBaseThread.cpp.

References osg::BaseThread::get().

00763 {
00764     return BaseThread::get(NULL);
00765 }

const MPThreadType & BaseThread::getClassType void   )  [static, inherited]
 

Definition at line 767 of file OSGBaseThread.cpp.

References osg::BaseThread::_type.

Referenced by osg::ThreadManager::init().

00768 {
00769     return _type;
00770 }

void BaseThread::join BaseThread pThread  )  [static, inherited]
 

Definition at line 781 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::join().

Referenced by osg::ProxyGroup::draw(), osg::ProxyGroup::startLoading(), osg::SceneFileHandler::stopReadProgressThread(), osg::GroupMCastConnection::write(), osg::GroupMCastConnection::~GroupMCastConnection(), and osg::PointMCastConnection::~PointMCastConnection().

00782 {
00783     Inherited::join(pThread);
00784 }

void BasePThreadBase::join BasePThreadBase threadP  )  [static, protected, inherited]
 

Definition at line 221 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::_pThreadDesc.

Referenced by osg::BaseThread::join().

00222 {
00223     if(pThread != NULL && pThread->_pThreadDesc != NULL)
00224     {
00225         pthread_join(*(pThread->_pThreadDesc), NULL);
00226     }
00227 }

void BaseThread::run void   )  [inherited]
 

Definition at line 789 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::runFunction(), and osg::BaseThread::runWorkProc().

00790 {
00791     Inherited::runFunction(runWorkProc, this);
00792 }

void BaseThread::block void   )  [inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 802 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::block().

00803 {
00804     Inherited::block();
00805 }

void BaseThread::unblock void   )  [inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 807 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::unblock().

00808 {
00809     Inherited::unblock();
00810 }

bool BaseThread::exists void   )  [inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 814 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::exists().

00815 {
00816     return Inherited::exists();
00817 }

void BaseThread::terminate void   )  [inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 820 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::terminate().

Referenced by osg::BaseThread::~BaseThread().

00821 {
00822     Inherited::terminate();
00823 }

void BaseThread::kill void   )  [inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 825 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::kill().

00826 {
00827     Inherited::kill();
00828 }

void BaseThread::print void   )  [inherited]
 

Reimplemented from osg::BasePThreadBase.

Definition at line 832 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::print().

00833 {
00834     Inherited::print();
00835 }

void BaseThread::runWorkProc void *  pThread  )  [static, protected, inherited]
 

Definition at line 865 of file OSGBaseThread.cpp.

Referenced by run(), and osg::BaseThread::run().

00866 {
00867     if(pThread != NULL)
00868     {
00869         static_cast<BaseThread *>(pThread)->workProc();
00870     }
00871 }

void BaseThread::workProc void   )  [protected, virtual, inherited]
 

Definition at line 893 of file OSGBaseThread.cpp.

00894 {
00895 }

void * BasePThreadBase::threadFunc void *  pThreadArg  )  [static, protected, inherited]
 

Definition at line 114 of file OSGBaseThread.cpp.

Referenced by osg::BasePThreadBase::runFunction().

00115 {
00116     void **pArgs = (void **) pThreadArg;
00117 
00118     if(pArgs != NULL)
00119     {
00120         if(pArgs[2] != NULL)
00121         {
00122             ((BaseThread *) pArgs[2])->init();
00123 
00124             if(pArgs[0] != NULL)
00125             {
00126                 ThreadFuncF fThreadFunc = (ThreadFuncF) pArgs[0];
00127 
00128                 fThreadFunc(pArgs[1]);
00129             }
00130         }
00131     }
00132 
00133     return NULL;
00134 }

void BasePThreadBase::freeThread void *  pThread  )  [static, protected, inherited]
 

Definition at line 137 of file OSGBaseThread.cpp.

Referenced by osg::BaseThread::initThreading(), and osg::ThreadManager::shutdown().

00138 {
00139     BaseThread **pT = static_cast<BaseThread **>(pThread);
00140 
00141     delete pT;
00142 }

void BasePThreadBase::setupThread void   )  [protected, inherited]
 

Definition at line 171 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::_threadKey.

Referenced by osg::BasePThreadBase::init().

00172 {
00173 #ifdef OSG_PTHREAD_ELF_TLS
00174     _pLocalThread = static_cast<BaseThread *>(this);
00175 #else
00176     BaseThread **pThread = new BaseThread *;
00177 
00178     *pThread = (BaseThread *) this;
00179 
00180     pthread_setspecific(_threadKey, (void *) pThread);
00181 #endif
00182 }

void BasePThreadBase::setupBlockCond void   )  [protected, inherited]
 

Definition at line 184 of file OSGBaseThread.cpp.

References osg::BasePThreadBase::_pBlockCond, and osg::BasePThreadBase::_pBlockMutex.

Referenced by osg::BasePThreadBase::init().

00185 {
00186     _pBlockCond  = new pthread_cond_t;
00187     _pBlockMutex = new pthread_mutex_t;
00188 
00189     pthread_cond_init (_pBlockCond, NULL);
00190     pthread_mutex_init(_pBlockMutex, NULL);
00191 }

bool BaseThreadCommonBase::isInitialized void   )  [inherited]
 

Definition at line 73 of file OSGBaseThread.cpp.

References osg::BaseThreadCommonBase::_bInitialized.

00074 {
00075     return _bInitialized;
00076 }

const MPType & MPBase::getStaticType void   )  [static, inherited]
 

Definition at line 253 of file OSGMPBase.cpp.

References osg::MPBase::_type.

00254 {
00255     return _type;
00256 }

UInt32 MPBase::getStaticTypeId void   )  [static, inherited]
 

Definition at line 259 of file OSGMPBase.cpp.

00260 {
00261     return 0;
00262 }

MPType & MPBase::getType void   )  [virtual, inherited]
 

Definition at line 265 of file OSGMPBase.cpp.

References osg::MPBase::_type.

Referenced by osg::MPBase::getTypeId().

00266 {
00267     return _type;
00268 }

const MPType & MPBase::getType void   )  const [virtual, inherited]
 

Definition at line 271 of file OSGMPBase.cpp.

References osg::MPBase::_type.

00272 {
00273     return _type;
00274 }

UInt32 MPBase::getTypeId void   )  [inherited]
 

Definition at line 277 of file OSGMPBase.cpp.

References osg::TypeBase::getId(), and osg::MPBase::getType().

00278 {
00279     return getType().getId();
00280 }

const Char8 * MPBase::getCName void   )  const [inherited]
 

Definition at line 283 of file OSGMPBase.cpp.

References osg::MPBase::_szName.

00284 {
00285     return _szName;
00286 }

void MemoryObject::addRef void   )  [inherited]
 

Definition at line 64 of file OSGMemoryObject.cpp.

References osg::MemoryObject::_refCount.

Referenced by osg::SharedObjectHandler::getSharedObject(), and osg::SharedObjectHandler::initialize().

00065 {
00066     _refCount++;
00067 }

void MemoryObject::subRef void   )  [inherited]
 

Definition at line 69 of file OSGMemoryObject.cpp.

References osg::MemoryObject::_refCount.

00070 {
00071     _refCount--;
00072 
00073     if(_refCount <= 0)
00074         delete this;
00075 }

Int32 MemoryObject::getRefCount void   )  [inherited]
 

Definition at line 77 of file OSGMemoryObject.cpp.

References osg::MemoryObject::_refCount.

00078 {
00079     return _refCount;
00080 }


Friends And Related Function Documentation

friend class ThreadManager [friend]
 

Reimplemented from osg::PThreadBase.

Definition at line 535 of file OSGThread.h.

friend class MPFieldStore< BaseThread > [friend]
 

Reimplemented from osg::BaseThread.

Definition at line 536 of file OSGThread.h.


Member Data Documentation

MPThreadType Thread::_type [static, protected]
 

Reimplemented from osg::BaseThread.

pthread_key_t PThreadBase::_aspectKey [static, protected, inherited]
 

Definition at line 126 of file OSGThread.cpp.

Referenced by osg::PThreadBase::getAspect(),