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