task_handle Class

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

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 (Concurrency Runtime).

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 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

See Also

Reference

concurrency Namespace

task_group Class

structured_task_group Class

make_task Function

task_group::run Method

task_group::wait Method

task_group::run_and_wait Method

structured_task_group::run Method

structured_task_group::wait Method

structured_task_group::run_and_wait Method