循环锁
我写了个循环锁,但是为什么用的时候会有问题,不能进行互斥。。
class MutexEx
{
public:
/**-----------------*/
MutexEx(void);mFlag(0){}
~MutexEx(void){}
/**-----------------*/
//Enter loop-lock;
void enterLoop(void)
{ while(InterlockedExchange(&mFlag ,1))
boost::thread::yield();
}
//Leave loop-lock;
void leaveLoop(void)
{InterlockedExchange(&mFlag , 0);}
private:
long mFlag;
};
class MutexExImp
{
public:
MutexExImp(MutexEx& mutex) : mMutex(mutex)
{mMutex.enterLoop();}
~MutexExImp(void){mMutex.leaveLoop();}
protected:
MutexEx& mMutex;
};