See More

#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); }