mirror of
https://bitbucket.org/seefoe/dockerized-swg-src.git
synced 2026-07-28 23:16:01 -04:00
80 lines
1.8 KiB
C++
80 lines
1.8 KiB
C++
////////////////////////////////////////
|
|
// Mutex.h
|
|
//
|
|
// Purpose:
|
|
// 1. Declair the CMutex class that encapsulates the functionality of a
|
|
// mutually-exclusive device.
|
|
//
|
|
// Revisions:
|
|
// 07/10/2001 Created
|
|
//
|
|
|
|
#ifndef BASE_LINUX_MUTEX_H
|
|
#define BASE_LINUX_MUTEX_H
|
|
|
|
#if !defined(_REENTRANT)
|
|
# pragma message( "Excluding Base::CMutex - requires multi-threaded compile. (_REENTRANT)" )
|
|
#else
|
|
|
|
|
|
#include "Platform.h"
|
|
|
|
#ifdef EXTERNAL_DISTRO
|
|
namespace NAMESPACE
|
|
{
|
|
|
|
#endif
|
|
namespace Base
|
|
{
|
|
|
|
////////////////////////////////////////
|
|
// Class:
|
|
// CMutex
|
|
//
|
|
// Purpose:
|
|
// Encapsulates the functionality of a mutually-exclusive device.
|
|
// This class is valuable for protecting against race conditions
|
|
// within threaded applications. The CMutex class can be used to
|
|
// only allow a single thread to run within a specified code
|
|
// segment at a time.
|
|
//
|
|
// Public Methods:
|
|
// Lock() : Locks the mutex. If the mutex is already locked, the
|
|
// operating system will block the calling thread until another
|
|
// thread has unlocked the mutex.
|
|
// Unlock() : Unlocks the mutex.
|
|
//
|
|
class CMutex
|
|
{
|
|
public:
|
|
CMutex();
|
|
~CMutex();
|
|
|
|
void Lock();
|
|
void Unlock();
|
|
private:
|
|
pthread_mutex_t mMutex;
|
|
bool mInitialized;
|
|
};
|
|
|
|
inline void CMutex::Lock(void)
|
|
{
|
|
if (mInitialized)
|
|
pthread_mutex_lock(&mMutex);
|
|
}
|
|
|
|
inline void CMutex::Unlock(void)
|
|
{
|
|
if (mInitialized)
|
|
pthread_mutex_unlock(&mMutex);
|
|
}
|
|
|
|
}
|
|
#ifdef EXTERNAL_DISTRO
|
|
};
|
|
#endif
|
|
#endif // #if defined(_MT)
|
|
|
|
#endif // BASE_LINUX_MUTEX_H
|
|
|