|
|
@@ -1,30 +1,27 @@
|
|
|
#ifndef PARALLEL_MANAGER_H
|
|
|
#define PARALLEL_MANAGER_H
|
|
|
|
|
|
-#include "Job.h"
|
|
|
+#include "anki/core/ParallelJob.h"
|
|
|
#include <boost/thread.hpp>
|
|
|
#include <boost/ptr_container/ptr_vector.hpp>
|
|
|
|
|
|
|
|
|
-namespace parallel {
|
|
|
-
|
|
|
-
|
|
|
/// The job manager
|
|
|
-class Manager
|
|
|
+class ParallelManager
|
|
|
{
|
|
|
public:
|
|
|
/// Default constructor
|
|
|
- Manager() {}
|
|
|
+ ParallelManager() {}
|
|
|
|
|
|
/// Constructor #2
|
|
|
- Manager(uint threadsNum) {init(threadsNum);}
|
|
|
+ ParallelManager(uint threadsNum) {init(threadsNum);}
|
|
|
|
|
|
/// Init the manager
|
|
|
void init(uint threadsNum);
|
|
|
|
|
|
/// Assign a job to a working thread
|
|
|
- void assignNewJob(uint threadId, JobCallback job,
|
|
|
- JobParameters& jobParams);
|
|
|
+ void assignNewJob(uint threadId, ParallelJobCallback job,
|
|
|
+ ParallelJobParameters& jobParams);
|
|
|
|
|
|
/// Wait for all jobs to finish
|
|
|
void waitForAllJobsToFinish();
|
|
|
@@ -32,25 +29,22 @@ class Manager
|
|
|
uint getThreadsNum() const {return jobs.size();}
|
|
|
|
|
|
private:
|
|
|
- boost::ptr_vector<Job> jobs; ///< Worker threads
|
|
|
+ boost::ptr_vector<ParallelJob> jobs; ///< Worker threads
|
|
|
boost::scoped_ptr<boost::barrier> barrier; ///< Synchronization barrier
|
|
|
};
|
|
|
|
|
|
|
|
|
-inline void Manager::assignNewJob(uint jobId,
|
|
|
- JobCallback callback, JobParameters& jobParams)
|
|
|
+inline void ParallelManager::assignNewJob(uint jobId,
|
|
|
+ ParallelJobCallback callback, ParallelJobParameters& jobParams)
|
|
|
{
|
|
|
jobs[jobId].assignNewJob(callback, jobParams);
|
|
|
}
|
|
|
|
|
|
|
|
|
-inline void Manager::waitForAllJobsToFinish()
|
|
|
+inline void ParallelManager::waitForAllJobsToFinish()
|
|
|
{
|
|
|
barrier->wait();
|
|
|
}
|
|
|
|
|
|
|
|
|
-} // end namespace
|
|
|
-
|
|
|
-
|
|
|
#endif
|