Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1.  
  2. class TaskBase {
  3. public:
  4. virtual void exec() = 0;
  5. virtual void finish() = 0;
  6. virtual bool isFinished() = 0;
  7. };
  8.  
  9. template<class T>
  10. class Task : public TaskBase {
  11. private:
  12. std::function<T()> fn;
  13. std::function<void(T)> cb;
  14. T result;
  15. std::atomic<bool> finished;
  16. public:
  17. Task(std::function<T()> fun, std::function<void(T)> callback = nullptr) : fn(fun), cb(callback) {}
  18. virtual void exec() {
  19. finished = false;
  20. result = fn();
  21. finished = true;
  22. }
  23. virtual bool isFinished() {
  24. return finished.load();
  25. }
  26. virtual void finish() {
  27. cb(result);
  28. }
  29. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement