mirror of https://github.com/OpenTTD/OpenTTD
(svn r26342) -Add: A mutex locker class.
parent
2945e76269
commit
dc0f89b7e9
|
@ -88,6 +88,28 @@ public:
|
||||||
virtual void SendSignal() = 0;
|
virtual void SendSignal() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
* Get number of processor cores in the system, including HyperThreading or similar.
|
||||||
* @return Total number of processor cores.
|
* @return Total number of processor cores.
|
||||||
|
|
Loading…
Reference in New Issue