#include <ArMutex.h>
Public Types | |
typedef pthread_mutex_t | MutexType |
enum | Status { STATUS_FAILED_INIT = 1, STATUS_FAILED, STATUS_ALREADY_LOCKED } |
Public Member Functions | |
ArMutex () | |
Constructor. | |
virtual const char * | getError (int messageNumber) const |
Get a human readable error message from an error code. | |
virtual MutexType & | getMutex () |
Get a reference to the underlying mutex variable. | |
virtual int | lock () |
Lock the mutex. | |
void | setLog (bool log) |
Sets a flag that will log out when we lock and unlock (not trylock). | |
void | setLogName (const char *logName) |
Sets a name we'll use to log with. | |
virtual int | tryLock () |
Try to lock the mutex, but do not block. | |
virtual int | unlock () |
Unlock the mutex, allowing another thread to obtain the lock. | |
virtual | ~ArMutex () |
Destructor. | |
Protected Attributes | |
bool | myFailedInit |
bool | myLog |
std::string | myLogName |
MutexType | myMutex |
ArStrMap | myStrMap |
This class wraps the operating system's mutex functions. It allows mutualy exclusive access to a critical section. This is extremely useful for multiple threads which want to use the same variable. On Linux, ArMutex simply uses the POSIX pthread interface in an object oriented manner. It also applies the same concept to Windows using Windows' own abilities to restrict access to critical sections.
Definition at line 46 of file ArMutex.h.
|
|
|
|
Try to lock the mutex, but do not block. Try to lock the mutex. This function will not block if another thread has the mutex locked. It will return instantly if that is the case. It will return STATUS_ALREADY_LOCKED if another thread has the mutex locked. If it obtains the lock, it will return 0. Definition at line 111 of file ArMutex_LIN.cpp. References STATUS_ALREADY_LOCKED, STATUS_FAILED, and STATUS_FAILED_INIT. Referenced by ArVersalogicIO::tryLock(), ArThread::tryLock(), ArSoundsQueue::tryLock(), ArRobot::tryLock(), ArNetServer::tryLock(), ArMap::tryLock(), and ArRangeDevice::tryLockDevice(). |