#include "TaskQueue.h"
template
TaskQueue::TaskQueue(/* args */)
{
//åå§åäºæ¥é
pthread_mutex_init(&m_mutex,nullptr);
}
//æ·»å ä»»å¡
template
void TaskQueue::addTask(Task task)
{
pthread_mutex_lock(&m_mutex);
//æä½å¯¹å°¾ æ·»å ä»»å¡
m_taskQ.push(task);
pthread_mutex_unlock(&m_mutex);
}
template
void TaskQueue::addTask(callBack f,void* arg)
{
pthread_mutex_lock(&m_mutex);
//æä½å¯¹å°¾ æ·»å ä»»å¡
m_taskQ.push(Task(f,arg));
pthread_mutex_unlock(&m_mutex);
}
//ååºä¸ä¸ªä»»å¡ -ç´æ¥æä½é头å³å¯
template
Task TaskQueue::takeTask()
{
Task t;
pthread_mutex_lock(&m_mutex);
//é¦å
夿任å¡é忝å¦ä¸ºç©º
if(!m_taskQ.empty())
{
t=m_taskQ.front();
m_taskQ.pop();
}
pthread_mutex_unlock(&m_mutex);
return t;
}
template
TaskQueue::~TaskQueue()
{
//éæ¯äºæ¥é
pthread_mutex_destroy(&m_mutex);
}