OpenLexocad  27.0
ThreadTask.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Topo/topo_defines.h>
4 
5 namespace Topo
6 {
7 class ShapeTool;
8 
10 {
11 public:
13  virtual ~ThreadTask(){};
14 };
15 
17 {
18 public:
20  virtual ~MainThreadCallback(){};
21  virtual void operator()(int done_in_percent) const = 0;
22 };
23 
25 {
26 public:
28  virtual ~ThreadTaskWorker(){};
29  virtual void operator()(Topo::ThreadTask* runable) const = 0;
30 };
31 
33 {
34 };
35 
37 {
38  friend Topo::ShapeTool;
39 
40 public:
41  virtual int idealThreadCount() = 0;
42  virtual void runParallel(int threads,
43  const std::vector<Topo::ThreadTask*>&,
44  const Topo::ThreadTaskWorker& worker,
45  const Topo::MainThreadCallback& callback) = 0;
46 
47  virtual void startTask(std::function<void()> fun) = 0;
48  virtual void stopAndJoinAllTasks() = 0;
49 
50 protected:
51  virtual ~ThreadPool(){};
53 };
54 } // namespace Topo
ThreadTask()
Definition: ThreadTask.h:12
#define TOPO_EXPORT
Definition: topo_defines.h:8
virtual ~ThreadPool()
Definition: ThreadTask.h:51
Definition: ThreadTask.h:16
Definition: ThreadTask.h:9
MainThreadCallback()
Definition: ThreadTask.h:19
virtual ~ThreadTaskWorker()
Definition: ThreadTask.h:28
Tools for creating, manipulating and querying Shapes.
Definition: ShapeTool.h:86
ThreadTaskWorker()
Definition: ThreadTask.h:27
Definition: Variant.h:70
virtual ~MainThreadCallback()
Definition: ThreadTask.h:20
ThreadPool()
Definition: ThreadTask.h:52
Definition: ThreadTask.h:36
virtual ~ThreadTask()
Definition: ThreadTask.h:13
Definition: ThreadTask.h:32
Definition: ThreadTask.h:24