diff options
author | fonsinchen <fonsinchen@openttd.org> | 2014-02-16 16:24:41 +0000 |
---|---|---|
committer | fonsinchen <fonsinchen@openttd.org> | 2014-02-16 16:24:41 +0000 |
commit | dc0f89b7e9bae8486771088e88b574c567b0dddc (patch) | |
tree | f513d6b7c1c49d1082ca7f4c588eb2ad8b83f115 /src/thread | |
parent | 2945e762691740993e0b62c54aa0f978ce15dbe9 (diff) | |
download | openttd-dc0f89b7e9bae8486771088e88b574c567b0dddc.tar.xz |
(svn r26342) -Add: A mutex locker class.
Diffstat (limited to 'src/thread')
-rw-r--r-- | src/thread/thread.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/thread/thread.h b/src/thread/thread.h index edb7d474e..a98dfb223 100644 --- a/src/thread/thread.h +++ b/src/thread/thread.h @@ -89,6 +89,28 @@ public: }; /** + * Simple mutex locker to keep a mutex locked until the locker goes out of scope. + */ +class ThreadMutexLocker { +public: + /** + * Lock the mutex and keep it locked for the life time of this object. + * @param mutex Mutex to be locked. + */ + ThreadMutexLocker(ThreadMutex *mutex) : mutex(mutex) { mutex->BeginCritical(); } + + /** + * Unlock the mutex. + */ + ~ThreadMutexLocker() { this->mutex->EndCritical(); } + +private: + ThreadMutexLocker(const ThreadMutexLocker &) { NOT_REACHED(); } + ThreadMutexLocker &operator=(const ThreadMutexLocker &) { NOT_REACHED(); return *this; } + ThreadMutex *mutex; +}; + +/** * Get number of processor cores in the system, including HyperThreading or similar. * @return Total number of processor cores. */ |