mirror of
https://github.com/caozhiyi/CppNet.git
synced 2026-01-19 00:05:14 +08:00
52 lines
1.3 KiB
C++
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 |