aboutsummaryrefslogtreecommitdiff
path: root/PxShared/src/foundation/include
diff options
context:
space:
mode:
authorSheikh Dawood Abdul Ajees <[email protected]>2018-02-12 15:31:42 -0600
committerSheikh Dawood Abdul Ajees <[email protected]>2018-02-12 15:31:42 -0600
commit52dae55c0c65f42caffa9d803be27be44ac4b8a3 (patch)
treec2fa77a97691d026593fe6aa45f1a56389fc5c70 /PxShared/src/foundation/include
parentPhysX 3.4, APEX 1.4 patch release @23472123 (diff)
downloadphysx-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.h42
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