#ifndef _MSGQUEUE_H__
#define _MSGQUEUE_H__
#include "./Protocol/Common.h"
#if WIN32
#include <Queue>
#else
#include <queue>
#include <time.h>
#include <semaphore.h>
#endif
using namespace std;
template<class T>
class CMsgQueue
{
private:
#if WIN32
#else
sem_t m_SemNum;
#endif
queue<T> m_ObjQueue;
private:
void Init();
void Uninit();
void GetFormatTime(struct timespec &stTimeSpec, ULONG ulDlyTimeMs);
public:
void PushMsgQueue(const T &A);
bool PopMsgQueue(T &A, ULONG ulDlyTimeMs);
public:
CMsgQueue();
~CMsgQueue();
};
template<class T>
CMsgQueue<T>::CMsgQueue()
{
Init();
}
template<class T>
CMsgQueue<T>::~CMsgQueue()
{
Uninit();
}
template<class T>
void CMsgQueue<T>::Init()
{
#if WIN32
#else
sem_init(&m_SemNum, 0, 0);
#endif
}
template<class T>
void CMsgQueue<T>::Uninit()
{
#if WIN32
#else
sem_destroy(&m_SemNum);
#endif
}
template
linux下带超时控制的消息队列模板
最新推荐文章于 2021-05-21 14:18:01 发布