📄 localmutex.h
字号:
#ifndef LOCALMUTEX_H#define LOCALMUTEX_H#include <semaphore.h>#include <errno.h>//******************************************************************************//本类采用Posix信号灯机制,内存信号灯class CLocalMutex { public: CLocalMutex(int isLocal=0,unsigned int value=1) { Open_Semaphore(isLocal,value); } CLocalMutex(bool isManul) { if(!isManul) { Open_Semaphore(); } } ~CLocalMutex() { Destroy_Semaphore(); } public: sem_t m_sem; public: bool Open_Semaphore(int isLocal=0,unsigned int value=0) { int rc=sem_init(&m_sem,isLocal,value); if(rc<0) return false; return true; } bool Destroy_Semaphore() { int rc=sem_destroy(&m_sem); return (!(rc<0)); } bool lock() { sem_wait(&m_sem); return true; } bool trylock() { int rc=sem_trywait(&m_sem); return !(rc==EAGAIN); } bool unlock() { sem_post(&m_sem); return true; }};class CLMutexLocker { public: CLMutexLocker(CLocalMutex *LocalMutex,bool bWait=false) { m_LocalMutex=LocalMutex; if(!bWait) m_LocalMutex->trylock(); else m_LocalMutex->lock(); } ~CLMutexLocker() { m_LocalMutex->unlock(); } public: CLocalMutex* GetMutex() { return m_LocalMutex; } private: CLocalMutex* m_LocalMutex;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -