Accelerated Computation Engine
ace_analytic_openclrun_thread.h
1 #ifndef ACE_ANALYTIC_OPENCLRUN_THREAD_H
2 #define ACE_ANALYTIC_OPENCLRUN_THREAD_H
3 #include <QThread>
4 #include "ace_analytic_openclrun.h"
5 #include "eabstractanalytic_opencl.h"
6 #include "global.h"
7 //
8 
9 
10 
11 namespace Ace
12 {
13  namespace Analytic
14  {
21  class OpenCLRun::Thread : public QThread
22  {
23  Q_OBJECT
24  public:
25  explicit Thread(std::unique_ptr<EAbstractAnalytic::OpenCL::Worker>&& worker, QObject* parent = nullptr);
26  void execute(std::unique_ptr<EAbstractAnalytic::Block>&& block);
27  std::unique_ptr<EAbstractAnalytic::Block> result();
28  signals:
31  void blockFinished();
32  protected:
33  virtual void run() override final;
34  private:
37  QAtomicInteger<int> _switch {0};
47  EAbstractAnalytic::Block* _work {nullptr};
51  EAbstractAnalytic::Block* _result {nullptr};
56  EException* _exception {nullptr};
57  };
58  }
59 }
60 
61 
62 
63 #endif
Definition: eexception.h:20
Definition: ace.h:6
virtual void run() override final
Definition: ace_analytic_openclrun_thread.cpp:125
Thread(std::unique_ptr< EAbstractAnalytic::OpenCL::Worker > &&worker, QObject *parent=nullptr)
Definition: ace_analytic_openclrun_thread.cpp:27
Definition: eabstractanalytic_opencl_worker.h:15
void execute(std::unique_ptr< EAbstractAnalytic::Block > &&block)
Definition: ace_analytic_openclrun_thread.cpp:49
Definition: ace_analytic_openclrun_thread.h:21
Definition: eabstractanalytic_block.h:17
std::unique_ptr< EAbstractAnalytic::Block > result()
Definition: ace_analytic_openclrun_thread.cpp:84