2019-04-30 16:42:59 +08:00
|
|
|
#ifndef HGL_PROCESS_MUTEX_INCLUDE
|
|
|
|
#define HGL_PROCESS_MUTEX_INCLUDE
|
|
|
|
|
|
|
|
#include<hgl/type/DataType.h>
|
|
|
|
|
|
|
|
#if HGL_OS!=HGL_OS_Windows
|
|
|
|
#include<semaphore.h>
|
|
|
|
#endif//HGL_OS!=HGL_OS_Windows
|
|
|
|
|
|
|
|
namespace hgl
|
|
|
|
{
|
2019-05-05 14:22:58 +08:00
|
|
|
/**
|
|
|
|
* 进程排斥
|
|
|
|
*/
|
|
|
|
class ProcMutex ///进程排斥
|
|
|
|
{
|
2019-04-30 16:42:59 +08:00
|
|
|
#if HGL_OS==HGL_OS_Windows
|
2019-05-05 14:22:58 +08:00
|
|
|
void *lock;
|
2019-04-30 16:42:59 +08:00
|
|
|
#else
|
|
|
|
sem_t *lock;
|
|
|
|
#endif//HGL_OS==HGL_OS_Windows
|
|
|
|
|
2019-05-05 14:22:58 +08:00
|
|
|
public:
|
2019-04-30 16:42:59 +08:00
|
|
|
|
2019-05-05 14:22:58 +08:00
|
|
|
ProcMutex();
|
|
|
|
~ProcMutex(){Clear();}
|
2019-04-30 16:42:59 +08:00
|
|
|
|
2019-05-05 14:22:58 +08:00
|
|
|
bool Create(const os_char *); ///<创建进程排斥
|
|
|
|
void Clear(); ///<清除进程排斥
|
2019-04-30 16:42:59 +08:00
|
|
|
|
2019-05-05 14:22:58 +08:00
|
|
|
bool Lock(); ///<锁定
|
|
|
|
bool TryLock(); ///<尝试锁定
|
2019-04-30 16:42:59 +08:00
|
|
|
|
2019-05-05 14:22:58 +08:00
|
|
|
bool Unlock(); ///<解锁
|
|
|
|
};//class ProcMutex
|
2019-04-30 16:42:59 +08:00
|
|
|
}//namespace hgl
|
|
|
|
#endif//HGL_PROCESS_MUTEX_INCLUDE
|