GENEIAL  0.2=/
 All Classes Pages
ExecutionManager.h
1 #pragma once
2 
3 #include <geneial/namespaces.h>
4 
5 #include <functional>
6 
7 geneial_private_namespace(geneial)
8 {
9 geneial_private_namespace(utility)
10 {
11 
12 geneial_export_namespace
13 {
14 
21 class BaseExecutionManager
22 {
23 public:
24  virtual ~BaseExecutionManager(){}
28  virtual void addTask(std::function<void()> const &task) = 0;
32  virtual void waitForTasks() = 0;
33 };
34 
35 
39 class SequentialExecutionManager: public BaseExecutionManager
40 {
41 public:
42  virtual void addTask(std::function<void()> const &task) override
43  {
44  task();
45  }
46 
47  virtual void waitForTasks() override
48  {
49  //Due to sequentialness we can immediatedly return
50  return;
51  }
52 
53 };
54 
55 
56 
57 } /* geneial_export_namespace */
58 } /* private namespace utility */
59 } /* private namespace geneial */