VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtJobSplitter.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvUtil/vrvUtil.h>
14 #include <tbb/tbb.h>
15 
16 namespace makVrv
17 {
18  // Forward declarations.
19  class DtDe;
20 
21 
27  {
29  : myData(0)
30  , jobFunction(0)
31  {
32  // intentional nop
33  }
34 
35  void* myData;
36  void(*jobFunction)(void* data);
37  };
38 
39 
45  {
46  public:
47 
48  DtJobSplitterTask(std::vector<DtJobSplitterJob*>& jobs);
49 
50  void operator()(const tbb::blocked_range<size_t>& r) const;
51 
52  protected:
53 
54  const std::vector<DtJobSplitterJob*>& myJobs;
55  };
56 
57 
65  {
66  public:
67 
69  DtJobSplitter(DtDe& de);
70 
72  virtual ~DtJobSplitter();
73 
74  private:
75 
77  DtJobSplitter();
78 
80  DtJobSplitter(const DtJobSplitter &other);
81 
83  DtJobSplitter &operator=(const DtJobSplitter &other);
84 
85  public:
86 
89  virtual void addJob(DtJobSplitterJob* job);
90 
92  virtual size_t jobCount();
93 
98  virtual void runJobs(int threshold);
99 
100  protected:
101 
103  std::vector<DtJobSplitterJob*> myJobs;
104  };
105 
106 
109  {
110  public:
113 
115  virtual ~DtJobSplitterCreator();
116 
117  private:
121  DtJobSplitterCreator &operator=(const DtJobSplitterCreator& other);
122 
123  public:
125  virtual DtJobSplitter* create() const;
126 
129  static DtJobSplitterCreator& instance(DtDe& de);
130 
132  static const std::string& theClassName();
133 
134  protected:
135 
137  };
138 }
139 
140 
141 
142 
void * myData
Definition: DtJobSplitter.h:35
Virtual base class.
Definition: DtVirtualBaseClass.h:22
#define DT_DLL_VRVUTIL
Definition: vrvUtil.h:34
this class is used to split work up between threads.
Definition: DtJobSplitter.h:64
A class to define a task for use with tbb::parallel_for.
Definition: DtJobSplitter.h:44
Contains DLL export macros.
Contains makVrv::DtVirtualBaseClass class.
const std::vector< DtJobSplitterJob * > & myJobs
Definition: DtJobSplitter.h:54
creator for DtJobSplitter
Definition: DtJobSplitter.h:108
DtJobSplitterJob()
Definition: DtJobSplitter.h:28
A generic structure to hold data for a job for use with DtJobSplitter.
Definition: DtJobSplitter.h:26
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::vector< DtJobSplitterJob * > myJobs
Definition: DtJobSplitter.h:103
DtDe & myDe
Definition: DtJobSplitter.h:102
DtDe & myDe
Definition: DtJobSplitter.h:136

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)