aboutsummaryrefslogtreecommitdiff
path: root/dep/include/g3dlite/G3D/GMutex.h
diff options
context:
space:
mode:
Diffstat (limited to 'dep/include/g3dlite/G3D/GMutex.h')
-rw-r--r--dep/include/g3dlite/G3D/GMutex.h123
1 files changed, 0 insertions, 123 deletions
diff --git a/dep/include/g3dlite/G3D/GMutex.h b/dep/include/g3dlite/G3D/GMutex.h
deleted file mode 100644
index 3469b812736..00000000000
--- a/dep/include/g3dlite/G3D/GMutex.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- @file GMutex.h
-
- @created 2005-09-22
- @edited 2009-03-25
- */
-
-#ifndef G3D_GMutex_h
-#define G3D_GMutex_h
-
-#include "G3D/platform.h"
-#include "G3D/AtomicInt32.h"
-#include "G3D/debugAssert.h"
-#include <string>
-
-#ifndef G3D_WIN32
-# include <pthread.h>
-# include <signal.h>
-#endif
-
-
-namespace G3D {
-
-/**
- \brief A mutual exclusion lock that busy-waits when locking.
-
- On a machine with one (significant) thread per processor core,
- a spinlock may be substantially faster than a mutex.
-
- \sa G3D::GThread, G3D::GMutex, G3D::AtomicInt32
- */
-class Spinlock {
-private:
-
- AtomicInt32 x;
-
-public:
-
- inline Spinlock() : x(0) {}
-
- /** Busy waits until the lock is unlocked, then locks it
- exclusively. Returns true if the lock succeeded on the first
- try (indicating no contention). */
- inline bool lock() {
- bool first = true;
- while (x.compareAndSet(0, 1) == 1) {
- first = false;
-# ifdef G3D_WIN32
- Sleep(0);
-# else
- usleep(0);
-# endif
- }
- return first;
- }
-
- inline void unlock() {
- x.compareAndSet(1, 0);
- }
-
-};
-
-/**
- \brief Mutual exclusion lock used for synchronization.
-
- @sa G3D::GThread, G3D::AtomicInt32, G3D::Spinlock
-*/
-class GMutex {
-private:
-# ifdef G3D_WIN32
- CRITICAL_SECTION m_handle;
-# else
- pthread_mutex_t m_handle;
- pthread_mutexattr_t m_attr;
-# endif
-
- // Not implemented on purpose, don't use
- GMutex(const GMutex &mlock);
- GMutex &operator=(const GMutex &);
- bool operator==(const GMutex&);
-
-public:
- GMutex();
- ~GMutex();
-
- /** Locks the mutex or blocks until available. */
- void lock();
-
- /** Locks the mutex if it not already locked.
- Returns true if lock successful, false otherwise. */
- bool tryLock();
-
- /** Unlocks the mutex. */
- void unlock();
-};
-
-
-/**
- Automatically locks while in scope.
-*/
-class GMutexLock {
-private:
- GMutex* m;
-
- // Not implemented on purpose, don't use
- GMutexLock(const GMutexLock &mlock);
- GMutexLock &operator=(const GMutexLock &);
- bool operator==(const GMutexLock&);
-
-public:
- GMutexLock(GMutex* mutex) {
- m = mutex;
- m->lock();
- }
-
- ~GMutexLock() {
- m->unlock();
- }
-};
-
-} // G3D
-
-#endif