| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /**
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University. All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license. You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * @file reMutex.h
- * @author drose
- * @date 2006-01-15
- */
- #ifndef REMUTEX_H
- #define REMUTEX_H
- #include "pandabase.h"
- #include "mutexDebug.h"
- #include "reMutexDirect.h"
- /**
- * A reentrant mutex. This kind of mutex can be locked more than once by the
- * thread that already holds it, without deadlock. The thread must eventually
- * release the mutex the same number of times it locked it.
- *
- * This class inherits its implementation either from MutexDebug or
- * ReMutexDirect, depending on the definition of DEBUG_THREADS.
- */
- #ifdef DEBUG_THREADS
- class EXPCL_PANDA_PIPELINE ReMutex : public MutexDebug
- #else
- class EXPCL_PANDA_PIPELINE ReMutex : public ReMutexDirect
- #endif // DEBUG_THREADS
- {
- PUBLISHED:
- INLINE ReMutex();
- public:
- INLINE explicit ReMutex(const char *name);
- PUBLISHED:
- INLINE explicit ReMutex(const std::string &name);
- ReMutex(const ReMutex ©) = delete;
- ~ReMutex() = default;
- void operator = (const ReMutex ©) = delete;
- EXTENSION(bool acquire(bool blocking=true) const);
- EXTENSION(bool __enter__());
- EXTENSION(void __exit__(PyObject *, PyObject *, PyObject *));
- };
- #include "reMutex.I"
- #endif
|