#include "TaskQueue.h" template TaskQueue::TaskQueue() { pthread_mutex_init(&m_mutex, NULL); } template TaskQueue::~TaskQueue() { pthread_mutex_destroy(&m_mutex); } template void TaskQueue::addTask(Task task) { pthread_mutex_lock(&m_mutex); m_taskQ.push(task); pthread_mutex_unlock(&m_mutex); } template void TaskQueue::addTask(task_callback f, void* arg) { pthread_mutex_lock(&m_mutex); m_taskQ.push(Task(f, arg)); pthread_mutex_unlock(&m_mutex); } template Task TaskQueue::getTask() { 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; }