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;
105 template<
class Input_T,
class Job_T >
111 throw WException( std::string(
"Invalid input." ) );
115 template<
class Input_T,
class Job_T >
120 template<
class Input_T,
class Job_T >
124 while( getJob( job ) && !shutdown() )
126 compute( m_input, job );
134 template<
class Input_T,
class Job_T >
172 virtual void compute( boost::shared_ptr< InputType const > input, std::size_t voxelNum ) = 0;
180 template<
class Input_T,
class Job_T >
186 throw WException( std::string(
"Invalid input." ) );
190 template<
class Input_T,
class Job_T >
195 template<
class Input_T,
class Job_T >
198 WAssert( m_input,
"Bug: operations of an invalid input requested." );
199 size_t numElements = m_input->size();
202 size_t start = numElements / numThreads * id;
203 size_t end = (
id + 1 ) * ( numElements / numThreads );
204 if(
id == numThreads - 1 )
209 for(
size_t voxelNum = start; ( voxelNum < end ) && !shutdown(); ++voxelNum )
211 compute( m_input, voxelNum );
215 #endif // WTHREADEDJOBS_H