-
Notifications
You must be signed in to change notification settings - Fork 67
NoLock
juhgiyo edited this page Jul 5, 2012
·
4 revisions
#include "epl.h"
using namespace epl;
- Usage is same as CriticalSectionEx
- HOWEVER whichever NoLock function you call, locking will NOT occur.
- This class is more like a place holder for different policy of mutual exclusion. (Please see the example below.)
typedef enum _mutualExclusionPolicy
{
MULTI_PROCESS=0,
MULTI_THREAD,
SINGLE_THREAD
}MutualExclusionPolicy;
...
class SomeClass
{
...
private:
BaseLock *m_lock; // Lock pointer
};
...
SomeClass::SomeClass(MutalExclusionPolicy policy)
{
switch(policy)
{
case MULTI_PROCESS:
m_lock=new Mutex();
break;
case MULTI_THREAD:
m_lock=new CriticalSectionEx();
break;
case SINGLE_THREAD:
m_lock=new NoLock();
break;
}
}
...
void SomeClass::SomeFunc()
{
LockObj(m_lock); // Mutual Exclusion when policy is NOT SINGLE_THREAD
...
}