diff options
| author | Sheikh Dawood Abdul Ajees <[email protected]> | 2018-02-12 15:31:42 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <[email protected]> | 2018-02-12 15:31:42 -0600 |
| commit | 52dae55c0c65f42caffa9d803be27be44ac4b8a3 (patch) | |
| tree | c2fa77a97691d026593fe6aa45f1a56389fc5c70 /PxShared/src/foundation/include | |
| parent | PhysX 3.4, APEX 1.4 patch release @23472123 (diff) | |
| download | physx-3.4-52dae55c0c65f42caffa9d803be27be44ac4b8a3.tar.xz physx-3.4-52dae55c0c65f42caffa9d803be27be44ac4b8a3.zip | |
PhysX 3.4, APEX 1.4 patch release @23576764
Diffstat (limited to 'PxShared/src/foundation/include')
| -rw-r--r-- | PxShared/src/foundation/include/PsMutex.h | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/PxShared/src/foundation/include/PsMutex.h b/PxShared/src/foundation/include/PsMutex.h index 23033d09..d870fa03 100644 --- a/PxShared/src/foundation/include/PsMutex.h +++ b/PxShared/src/foundation/include/PsMutex.h @@ -163,7 +163,8 @@ class PX_FOUNDATION_API ReadWriteLock ReadWriteLock(); ~ReadWriteLock(); - void lockReader(); + // "takeLock" can only be false if the thread already holds the mutex, e.g. if it already acquired the write lock + void lockReader(bool takeLock=true); void lockWriter(); void unlockReader(); @@ -173,10 +174,17 @@ class PX_FOUNDATION_API ReadWriteLock class ReadWriteLockImpl* mImpl; }; +typedef MutexT<> Mutex; + + + + +// PT: the following classes aren't used in PhysX but might still be used in APEX. + class ScopedReadLock { PX_NOCOPY(ScopedReadLock) - public: +public: PX_INLINE ScopedReadLock(ReadWriteLock& lock) : mLock(lock) { mLock.lockReader(); @@ -186,14 +194,14 @@ class ScopedReadLock mLock.unlockReader(); } - private: +private: ReadWriteLock& mLock; }; class ScopedWriteLock { PX_NOCOPY(ScopedWriteLock) - public: +public: PX_INLINE ScopedWriteLock(ReadWriteLock& lock) : mLock(lock) { mLock.lockWriter(); @@ -203,22 +211,20 @@ class ScopedWriteLock mLock.unlockWriter(); } - private: +private: ReadWriteLock& mLock; }; -typedef MutexT<> Mutex; - /* - * Use this type of lock for mutex behaviour that must operate on SPU and PPU - * On non-PS3 platforms, it is implemented using Mutex - */ +* Use this type of lock for mutex behaviour that must operate on SPU and PPU +* On non-PS3 platforms, it is implemented using Mutex +*/ class AtomicLock { Mutex mMutex; PX_NOCOPY(AtomicLock) - public: +public: AtomicLock() { } @@ -245,7 +251,7 @@ class AtomicLockCopy { AtomicLock* pLock; - public: +public: AtomicLockCopy() : pLock(NULL) { } @@ -277,7 +283,7 @@ class AtomicRwLock ReadWriteLock m_Lock; PX_NOCOPY(AtomicRwLock) - public: +public: AtomicRwLock() { } @@ -320,10 +326,18 @@ class ScopedAtomicLock } PX_NOCOPY(ScopedAtomicLock) - private: +private: AtomicLock& mLock; }; + + + + + + + + } // namespace shdfnd } // namespace physx |