⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskqueue.cpp

📁 在linux下基于UDP通讯的程序,包括客户端与服务端.
💻 CPP
字号:
#include "TaskQueue.h"
#include "CommHead.h"
#include "iostream"
#include "LogHelper.h"

using namespace std;

CTaskQueue  theQueue;
LockType g_TaskQueueLock;
extern CLogHelper theLogger;
CTaskQueue::CTaskQueue()
{
  InitLock(&g_TaskQueueLock);	
}

CTaskQueue::~CTaskQueue()
{
	
}
//向任务队列中添加任务对象
bool CTaskQueue::PushTask(CTask *task)
{
	if(task != NULL)
	{  
		string str = "添加一个任务到队列中[CTaskQueue::PushTask(CTask *task)]";
		theLogger.LogMessage(str, true);
		LockOn(&g_TaskQueueLock);
		m_pTaskList.push(task);
		LockOff(&g_TaskQueueLock);
		return true;
	}
	else
	{
		return false;
	}
}

//从任务对列中取出来一个任务对象
//返回指向新的对象的指针
CTask* CTaskQueue::FetchTask()
{
	CTask * task = NULL;
	LockOn(&g_TaskQueueLock);
	if(!m_pTaskList.empty())
	{
		task = m_pTaskList.front();
		m_pTaskList.pop();
	}
	LockOff(&g_TaskQueueLock);
    return task;
}

//得到任务队列中任务对象的个数
inline int CTaskQueue::Size() const
{
	int nRet = 0;
	LockOn(&g_TaskQueueLock);
	nRet = m_pTaskList.size();
	LockOff(&g_TaskQueueLock);
	return nRet;
}
bool CTaskQueue::IsEmpty() const
{
	return (Size() == 0);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -