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 + -
显示快捷键?