这次介绍线程同步与通信方面的移植方案。
同步与通信操作
句柄
typedef BHANDLE BHIPC;
typedef BHIPC BHMUTEX;
typedef BHIPC BHEVENT;
typedef BHIPC BSEMAPHORE;
typedef BHANDLE BHMQ;
前置声明
class BIPC;
class BMutex;
class BEvent;
class BSemaphore;
class BMQ;
class BSingleLock;
IPC基础
class BAPI BIPC : public BObject
{
public:
BIPC();
virtual ~BIPC();
BHIPC Handle() { return m_hipc; }
virtual BULONG Create( BULONG maxcount = 0 , BULONG initcount = 0, BULONG rtimeout =BINFINITE , BULONG wtimeout =BINFINITE ) = 0;
virtual BULONG Destroy() = 0;
virtual BULONG Lock( BULONG timeout = BINFINITE ) = 0;
virtual BULONG Unlock() = 0;
protected:
BHIPC m_hipc;
};
互斥量
class BAPI BMutex : public BIPC
{
public:
BMutex();
virtual ~BMutex();
virtual BULONG Create( BULONG maxcount = 0 , BULONG initcount = 0, BULONG rtimeout =0 , BULONG wtimeout=0 );
virtual BULONG Destroy();
virtual BULONG Lock(BULONG timeout = BINFINITE );
virtual BULONG Unlock();
};
事件
class BAPI BEvent : public BIPC
{
public:
BEvent();
virtual ~BEvent();
virtual BULONG Create( BULONG maxcount = 0 , BULONG initcount = 0 ,BULONG rtimeout =BINFINITE , BULONG wtimeout =BINFINITE );
virtual BULONG Destroy();
virtual BULONG Lock(BULONG timeout = BINFINITE );
virtual BULONG Unlock();
};
信号量
class BAPI BSemaphore : public BIPC
{
public:
BSemaphore();
virtual ~BSemaphore();
virtual BULONG Create( BULONG maxcount = 0 , BULONG initcount = 0, BULONG rtimeout =BINFINITE , BULONG wtimeout =BINFINITE );
virtual BULONG Destroy();
virtual BULONG Lock(BULONG timeout = BINFINITE );
virtual BULONG Unlock();
};
消息队列
class BAPI BMQ : public BObject
{
public:
BMQ();
virtual ~BMQ();
virtual BULONG Create( BULONG maxcount = 0, BULONG msglen = 0 , BULONG rtimeout =BINFINITE , BULONG wtimeout =BINFINITE );
virtual BULONG Destroy();
BULONG Read( BVOID * msg );
BULONG Write(const BVOID * msg );
protected:
BHMQ m_hmq;
};
发表于 @ 2007年03月31日 10:28:00|评论(loading...)|编辑