Files
25Sep01_ThreadMutex/code/ThreadMutex.cpp

54 lines
1016 B
C++

#include "ThreadMutex.h"
int ThreadMutex::XLockGetTestFlag(void)
{
return mCurTestFlag_;
}
bool ThreadMutex::XLockTryLock(int tInputWait10Ms, int tInputTestFlag)
{
int tTempN;
if (tInputWait10Ms <= 0)
{
while (1)
{
if (0 == pthread_mutex_trylock(&mMutex_))
{
mCurTestFlag_ = tInputTestFlag;
return true;
}
usleep(1000 * 5);
}
}
else
{
for (tTempN = 0; tTempN < tInputWait10Ms; tTempN++)
{
if (0 == pthread_mutex_trylock(&mMutex_))
{
mCurTestFlag_ = tInputTestFlag;
return true;
}
usleep(1000 * 5);
}
return false;
}
}
void ThreadMutex::XLockUnLock(void)
{
mCurTestFlag_ = -1;
pthread_mutex_unlock(&mMutex_);
}
ThreadMutex::ThreadMutex(void)
{
pthread_mutex_init(&mMutex_, NULL);
}
ThreadMutex::~ThreadMutex()
{
pthread_mutex_destroy(&mMutex_);
}