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