| Note on Use | 
|---|
| 
 Modules used exclusively in a uniprocessor environment do not require any of the routines described in this section. However, modules that use these routines on a parallel processor can also be run on a uniprocessor without changing any code.  | 
Task Groups constitute a mechanism for specifying a collection of tasks to be performed in parallel on a multiprocessor. The task model provides simple fork/join semantics, suitable for coarse-grain parallelism:
| Notes on Use | 
|---|
  | 
Error DXCreateTaskGroup()  | Starts a new Group of tasks to be run in parallel. See DXCreateTaskGroup.  | 
Error DXAddTask()  | Adds a task to be run later, in parallel if possible. See DXAddTask.  | 
Error DXAbortTaskGroup()  | Aborts a task group without executing it. See DXAbortTaskGroup.  | 
Error DXExecuteTaskGroup()  | Runs the Group of tasks in the current Group in parallel, if possible. See DXExecuteTaskGroup.  | 
int DXProcessors()  | Returns the number of processors. See DXProcessors.  | 
int DXProcessorId()  | Returns the current processor identifier. See DXProcessorId.  |