Files
CppNet/base/RunnableAloneTaskList.h
2019-09-07 23:07:17 +08:00

52 lines
1.3 KiB
C++

#ifndef HEADER_BASE_RUNNABLEALONETASKLIST
#define HEADER_BASE_RUNNABLEALONETASKLIST
#include "Runnable.h"
#include "TaskQueue.h"
namespace base {
typedef std::function<void()> Task;
template<typename T = Task>
class CRunnableAloneTaskList : public CRunnable
{
public:
CRunnableAloneTaskList() {}
virtual ~CRunnableAloneTaskList() {}
int GetTaskListSize() {
return _task_list.Size();
}
//post task
void Push(const T&& t) {
_task_list.Push(t);
}
void Push(const T& t) {
_task_list.Push(t);
}
void PushFront(const T&& t) {
_task_list.PushFront(t);
}
void PushFront(const T& t) {
_task_list.PushFront(t);
}
//TO DO
virtual void Run() = 0;
protected:
T _Pop() {
return std::move(_task_list.Pop());
}
CRunnableAloneTaskList(const CRunnableAloneTaskList&) = delete;
CRunnableAloneTaskList& operator=(const CRunnableAloneTaskList&) = delete;
private:
CTaskQueue<T> _task_list; //every thread have a task queue
};
}
#endif