Cleanup: use move semantics for task pool functions

This commit is contained in:
Brecht Van Lommel 2020-06-05 10:37:45 +02:00
parent f9d138be51
commit b7c34c889b
2 changed files with 7 additions and 7 deletions

@ -59,9 +59,9 @@ void TaskPool::push(Task *task, bool front)
TaskScheduler::push(entry, front); TaskScheduler::push(entry, front);
} }
void TaskPool::push(const TaskRunFunction &run, bool front) void TaskPool::push(TaskRunFunction &&run, bool front)
{ {
push(new Task(run), front); push(new Task(std::move(run)), front);
} }
void TaskPool::wait_work(Summary *stats) void TaskPool::wait_work(Summary *stats)
@ -478,9 +478,9 @@ void DedicatedTaskPool::push(Task *task, bool front)
queue_mutex.unlock(); queue_mutex.unlock();
} }
void DedicatedTaskPool::push(const TaskRunFunction &run, bool front) void DedicatedTaskPool::push(TaskRunFunction &&run, bool front)
{ {
push(new Task(run), front); push(new Task(std::move(run)), front);
} }
void DedicatedTaskPool::wait() void DedicatedTaskPool::wait()

@ -51,7 +51,7 @@ typedef function<void(int thread_id)> TaskRunFunction;
class Task { class Task {
public: public:
Task(){}; Task(){};
explicit Task(const TaskRunFunction &run_) : run(run_) explicit Task(TaskRunFunction &&run_) : run(run_)
{ {
} }
@ -90,7 +90,7 @@ class TaskPool {
~TaskPool(); ~TaskPool();
void push(Task *task, bool front = false); void push(Task *task, bool front = false);
void push(const TaskRunFunction &run, bool front = false); void push(TaskRunFunction &&run, bool front = false);
void wait_work(Summary *stats = NULL); /* work and wait until all tasks are done */ void wait_work(Summary *stats = NULL); /* work and wait until all tasks are done */
void cancel(); /* cancel all tasks, keep worker threads running */ void cancel(); /* cancel all tasks, keep worker threads running */
@ -180,7 +180,7 @@ class DedicatedTaskPool {
~DedicatedTaskPool(); ~DedicatedTaskPool();
void push(Task *task, bool front = false); void push(Task *task, bool front = false);
void push(const TaskRunFunction &run, bool front = false); void push(TaskRunFunction &&run, bool front = false);
void wait(); /* wait until all tasks are done */ void wait(); /* wait until all tasks are done */
void cancel(); /* cancel all tasks, keep worker thread running */ void cancel(); /* cancel all tasks, keep worker thread running */