Share via


task_handle Class

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The task_handle class represents an individual parallel work item. It encapsulates the instructions and the data required to execute a piece of work.

Syntax

template<
    typename _Function  
>  
class task_handle : public ::Concurrency::details::_UnrealizedChore;  

Parameters

_Function
The type of the function object that will be invoked to execute the work represented by the task_handle object.

Members

Public Constructors

Name Description
task_handle::task_handle Constructor Constructs a new task_handle object. The work of the task is performed by invoking the function specified as a parameter to the constructor.
task_handle::~task_handle Destructor Destroys the task_handle object.

Public Operators

Name Description
task_handle::operator() Operator The function call operator that the runtime invokes to perform the work of the task handle.

Remarks

task_handle objects can be used in conjunction with a structured_task_group or a more general task_group object, to decompose work into parallel tasks. For more information, see Task Parallelism.

Note that the creator of a task_handle object is responsible for maintaining the lifetime of the created task_handle object until it is no longer required by the Concurrency Runtime. Typically, this means that the task_handle object must not destruct until either the wait or run_and_wait method of the task_group or structured_task_group to which it is queued has been called.

task_handle objects are typically used in conjunction with C++ lambdas. Because you do not know the true type of the lambda, the [make_task]--brokenlink--(../Topic/Concurrency%Namespace%20Functions.md#make_task) function is typically used to create a task_handle object.

The runtime creates a copy of the work function that you pass to a task_handle object. Therefore, any state changes that occur in a function object that you pass to a task_handle object will not appear in your copy of that function object.

Inheritance Hierarchy

task_handle

Requirements

Header: ppl.h

Namespace: concurrency

task_handle::operator() Operator

The function call operator that the runtime invokes to perform the work of the task handle.

void operator()() const;

 

task_handle::task_handle Constructor

Constructs a new task_handle object. The work of the task is performed by invoking the function specified as a parameter to the constructor.

task_handle(const _Function& _Func);

Parameters

_Func
The function that will be invoked to execute the work represented by the task_handle object. This may be a lambda functor, a pointer to a function, or any object that supports a version of the function call operator with the signature void operator()().

Remarks

The runtime creates a copy of the work function that you pass to the constructor. Therefore, any state changes that occur in a function object that you pass to a task_handle object will not appear in your copy of that function object.

task_handle::~task_handle Destructor

Destroys the task_handle object.

~task_handle();

See Also

concurrency Namespace
task_group Class
structured_task_group Class