localmutex.h
来自「电力故障信息采集,主要是针对南自的保护装置,这个程序用在Linux操作系统下」· C头文件 代码 · 共 91 行
H
91 行
#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 + =
减小字号Ctrl + -
显示快捷键?