Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TaskBase {
- public:
- virtual void exec() = 0;
- virtual void finish() = 0;
- virtual bool isFinished() = 0;
- };
- template<class T>
- class Task : public TaskBase {
- private:
- std::function<T()> fn;
- std::function<void(T)> cb;
- T result;
- std::atomic<bool> finished;
- public:
- Task(std::function<T()> fun, std::function<void(T)> callback = nullptr) : fn(fun), cb(callback) {}
- virtual void exec() {
- finished = false;
- result = fn();
- finished = true;
- }
- virtual bool isFinished() {
- return finished.load();
- }
- virtual void finish() {
- cb(result);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement