25 #ifndef WTHREADEDJOBS_H
26 #define WTHREADEDJOBS_H
31 #include <boost/shared_ptr.hpp>
33 #include "WException.h"
51 template<
class Input_T,
class Job_T >
97 virtual void compute( boost::shared_ptr< InputType const > input,
JobType const& job ) = 0;
106 template<
class Input_T,
class Job_T >
112 throw WException( std::string(
"Invalid input." ) );
116 template<
class Input_T,
class Job_T >
121 template<
class Input_T,
class Job_T >
125 while( getJob( job ) && !shutdown() )
127 compute( m_input, job );
135 template<
class Input_T,
class Job_T >
173 virtual void compute( boost::shared_ptr< InputType const > input, std::size_t voxelNum ) = 0;
182 template<
class Input_T,
class Job_T >
188 throw WException( std::string(
"Invalid input." ) );
192 template<
class Input_T,
class Job_T >
197 template<
class Input_T,
class Job_T >
200 WAssert( m_input,
"Bug: operations of an invalid input requested." );
201 size_t numElements = m_input->size();
204 size_t start = numElements / numThreads * id;
205 size_t end = (
id + 1 ) * ( numElements / numThreads );
206 if(
id == numThreads - 1 )
211 for(
size_t voxelNum = start; ( voxelNum < end ) && !shutdown(); ++voxelNum )
213 compute( m_input, voxelNum );
217 #endif // WTHREADEDJOBS_H