Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
The combinable<T>
object is intended to provide thread-private copies of data, to perform lock-free thread-local sub-computations during parallel algorithms. At the end of the parallel operation, the thread-private sub-computations can then be merged into a final result. This class can be used instead of a shared variable, and can result in a performance improvement if there would otherwise be a lot of contention on that shared variable.
Syntax
template<typename T>
class combinable;
Parameters
T
The data type of the final merged result. The type must have a copy constructor and a default constructor.
Members
Public Constructors
Name | Description |
---|---|
combinable | Overloaded. Constructs a new combinable object. |
~combinable Destructor | Destroys a combinable object. |
Public Methods
Name | Description |
---|---|
clear | Clears any intermediate computational results from a previous usage. |
combine | Computes a final value from the set of thread-local sub-computations by calling the supplied combine functor. |
combine_each | Computes a final value from the set of thread-local sub-computations by calling the supplied combine functor once per thread-local sub-computation. The final result is accumulated by the function object. |
local | Overloaded. Returns a reference to the thread-private sub-computation. |
Public Operators
Name | Description |
---|---|
operator= | Assigns to a combinable object from another combinable object. |
Remarks
For more information, see Parallel Containers and Objects.
Inheritance Hierarchy
combinable
Requirements
Header: ppl.h
Namespace: concurrency
clear
Clears any intermediate computational results from a previous usage.
void clear();
combinable
Constructs a new combinable
object.
combinable();
template <typename _Function>
explicit combinable(_Function _FnInitialize);
combinable(const combinable& _Copy);
Parameters
_Function
The type of the initialization functor object.
_FnInitialize
A function which will be called to initialize each new thread-private value of the type T
. It must support a function call operator with the signature T ()
.
_Copy
An existing combinable
object to be copied into this one.
Remarks
The first constructor initializes new elements with the default constructor for the type T
.
The second constructor initializes new elements using the initialization functor supplied as the _FnInitialize
parameter.
The third constructor is the copy constructor.
~combinable
Destroys a combinable
object.
~combinable();
combine
Computes a final value from the set of thread-local sub-computations by calling the supplied combine functor.
template<typename _Function>
T combine(_Function _FnCombine) const;
Parameters
_Function
The type of the function object that will be invoked to combine two thread-local sub-computations.
_FnCombine
The functor that is used to combine the sub-computations. Its signature is T (T, T)
or T (const T&, const T&)
, and it must be associative and commutative.
Return Value
The final result of combining all the thread-private sub-computations.
combine_each
Computes a final value from the set of thread-local sub-computations by calling the supplied combine functor once per thread-local sub-computation. The final result is accumulated by the function object.
template<typename _Function>
void combine_each(_Function _FnCombine) const;
Parameters
_Function
The type of the function object that will be invoked to combine a single thread-local sub-computation.
_FnCombine
The functor that is used to combine one sub-computation. Its signature is void (T)
or void (const T&)
, and must be associative and commutative.
local
Returns a reference to the thread-private sub-computation.
T& local();
T& local(bool& _Exists);
Parameters
_Exists
A reference to a boolean. The boolean value referenced by this argument will be set to true
if the sub-computation already existed on this thread, and set to false
if this was the first sub-computation on this thread.
Return Value
A reference to the thread-private sub-computation.
operator=
Assigns to a combinable
object from another combinable
object.
combinable& operator= (const combinable& _Copy);
Parameters
_Copy
An existing combinable
object to be copied into this one.
Return Value
A reference to this combinable
object.