template<typename TIterator>
class itk::ThreadedIteratorRangePartitioner< TIterator >
Partitions an iterator range for threading.
- Template Parameters
-
TIterator | The type of the iterator. |
The DomainType
is defined to be an itk::ThreadedIteratorRangePartitionerDomain, a two component struct of iterators: the first iterator, Begin
, defines the start of the domain, and the second iterator, End
, defines one element past the end of the domain.
The class assumes that iterating through the domain will be a repeatable process.
While this class will work for most containers that use iterators, indexed containers such as std::vector or Array will be partitioned much more efficiently with a ThreadedIndexedContainerPartitioner.
This class is typically used as a template argument to a DomainThreader.
- See also
- ThreadedDomainPartitioner
-
DomainThreader
-
ThreadedIndexedContainerPartitioner
Definition at line 112 of file itkThreadedIteratorRangePartitioner.h.
|
const char * | GetNameOfClass () const override |
|
ThreadIdType | PartitionDomain (const ThreadIdType threadId, const ThreadIdType requestedTotal, const DomainType &completeDomain, DomainType &subDomain) const override |
|
Public Member Functions inherited from itk::ThreadedDomainPartitioner< ThreadedIteratorRangePartitionerDomain< TIterator > > |
const char * | GetNameOfClass () const override |
|
virtual ThreadIdType | PartitionDomain (const ThreadIdType threadId, const ThreadIdType requestedTotal, const DomainType &completeDomain, DomainType &subDomain) const=0 |
|
unsigned long | AddObserver (const EventObject &event, Command *) |
|
unsigned long | AddObserver (const EventObject &event, Command *) const |
|
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
|
LightObject::Pointer | CreateAnother () const override |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary () |
|
const MetaDataDictionary & | GetMetaDataDictionary () const |
|
virtual ModifiedTimeType | GetMTime () const |
|
const char * | GetNameOfClass () const override |
|
virtual const TimeStamp & | GetTimeStamp () const |
|
bool | HasObserver (const EventObject &event) const |
|
void | InvokeEvent (const EventObject &) |
|
void | InvokeEvent (const EventObject &) const |
|
virtual void | Modified () const |
|
void | Register () const override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) |
|
void | SetDebug (bool debugFlag) const |
|
void | SetReferenceCount (int) override |
|
void | UnRegister () const noexcept override |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
Pointer | Clone () const |
|
virtual Pointer | CreateAnother () const |
|
virtual void | Delete () |
|
virtual const char * | GetNameOfClass () const |
|
virtual int | GetReferenceCount () const |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
virtual void | Register () const |
|
virtual void | SetReferenceCount (int) |
|
virtual void | UnRegister () const noexcept |
|
template<typename TIterator >
Split the domain completeDomain
into up to requestedTotal
non-overlapping subdomains, setting subdomain number threadId
as subDomain
and returning the total number of subdomains actually available.
This method should be called repeatedly for each value of threadId
, from 0 up to the return value (which is always less than or equal to requestedTotal
).
It is an error for completeDomain
to be zero-length. If threadId
is greater than the return value, the contents of subDomain
are undefined.
Implements itk::ThreadedDomainPartitioner< ThreadedIteratorRangePartitionerDomain< TIterator > >.