Name

task Class — Base class for tasks.

Synopsis

#include "tbb/task.h"

class task;

Description

This class is the base class for tasks. Programmers are expected to derive classes from it and override the virtual method task*task::execute().

Each instance of task has associated attributes, which are described in Table 9-3. Although

they are not directly visible, they must be understood to fully grasp how task objects are used.

Warning

Always allocate memory for task objects using the special overloaded new operators provided by the library. Otherwise, results are undefined. Destruction of a task is normally implicit.

Table 9-3. Task attributes

Attribute

Description

owner

The worker thread that is currently in charge of the task.

parent

Either NULL or the parent/continuation task that allocated this task.

depth

The depth of the task in the task tree.

refcount

The number of tasks that have this as their parent. Increments and decrements of refcount must always be atomic.

Tip

The copy constructor and assignment operators for task are not accessible. This prevents the accidental copying of a task, which would be ill-defined and would corrupt internal data structures.

Notation

Some member descriptions illustrate the effects of running the methods by diagrams such as Figure 9-6.

Example effect diagram

Figure 9-6. Example effect diagram

Conventions in the diagram, such as Figure 9-6, are as follows:

  • Each task’s ...

Get Intel Threading Building Blocks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.