forked from Dr15Jones/root_serialization
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathOptionalTaskHolder.h
More file actions
39 lines (30 loc) · 918 Bytes
/
OptionalTaskHolder.h
File metadata and controls
39 lines (30 loc) · 918 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#if !defined(OptionalTaskHolder_h)
#define OptionalTaskHolder_h
#include <memory>
#include "tbb/task_group.h"
#include "TaskBase.h"
#include "TaskHolder.h"
namespace cce::tf {
class OptionalTaskHolder {
public:
OptionalTaskHolder() = delete;
OptionalTaskHolder(tbb::task_group& iGroup, std::unique_ptr<TaskBase> iTask):
group_{&iGroup}, task_{std::move(iTask)} {
}
OptionalTaskHolder(OptionalTaskHolder&&) = default;
OptionalTaskHolder& operator=(OptionalTaskHolder const&) = delete;
OptionalTaskHolder& operator=(OptionalTaskHolder&&) = delete;
tbb::task_group* group() { return group_;}
TaskHolder releaseToTaskHolder() {
return TaskHolder(*group_, std::move(task_));
}
void runNow() {
auto t = std::move(task_);
t->execute();
}
private:
tbb::task_group* group_;
std::unique_ptr<TaskBase> task_;
};
}
#endif