* make SeriesWork and ParallelWork derivable

Co-authored-by: XieHan <XieHan@sogou-inc.com>
This commit is contained in:
xiehan
2020-10-20 18:34:14 +08:00
committed by GitHub
co-authored by XieHan
parent 99695b0608
commit 196c701149
2 changed files with 13 additions and 9 deletions
+1 -1
View File
@@ -25,9 +25,9 @@
#include "Workflow.h"
SeriesWork::SeriesWork(SubTask *first, series_callback_t&& cb) :
queue(new SubTask *[4]),
callback(std::move(cb))
{
this->queue = new SubTask *[4];
this->queue_size = 4;
this->front = 0;
this->back = 0;
+12 -8
View File
@@ -114,6 +114,10 @@ public:
this->last = last;
}
protected:
void *context;
series_callback_t callback;
private:
SubTask *pop_task();
void expand_queue();
@@ -128,13 +132,11 @@ private:
int back;
bool in_parallel;
bool canceled;
void *context;
std::mutex mutex;
series_callback_t callback;
private:
protected:
SeriesWork(SubTask *first, series_callback_t&& callback);
~SeriesWork() { delete []this->queue; }
virtual ~SeriesWork() { delete []this->queue; }
friend class ParallelWork;
friend class Workflow;
};
@@ -230,9 +232,13 @@ public:
this->callback = std::move(callback);
}
private:
protected:
virtual SubTask *done();
protected:
void *context;
parallel_callback_t callback;
private:
void expand_buf();
void dismiss_recursive();
@@ -240,10 +246,8 @@ private:
private:
size_t buf_size;
SeriesWork **all_series;
void *context;
parallel_callback_t callback;
private:
protected:
ParallelWork(parallel_callback_t&& callback);
ParallelWork(SeriesWork *const all_series[], size_t n,
parallel_callback_t&& callback);